これは何?
業務でRefileを使用しているプロダクトを触っているのですが、2018.12.28現在でRefileは1年近く更新が止まってしまっているので、Shrineに置き換えを行いました。その時のメモです。
shrineとは
Rails向け画像アップローダ。refileの後継にあたり、ダイレクトアップロードもできる。
README
shrine for refile users
作業手順
shrineを使用したいモデルに
include ImageUploader[:image]
を追加する(これによって仮想属性のimage
が使用できるようになる)shrineに置き換えたいモデルのDBにimage_dataカラムを追加する
add_column :hoge_images, :image_data, :text
migationファイルにimage_dataカラムへ値を追加する処理を追加する。
HogeImageModel.where(image_data: nil).each do |image|
image.image = open(Rails.env.development? ? "https://local_path/#{image.src}" : image.src)
image.image_attacher.finalize
# finalizeメソッドがimage_dataの値をよしなに作成し、saveも行ってくれる
end
- viewのフォームをshrine用に書き直す
form_for @photo do |f|
f.hidden_field :image, value: @photo.cached_image_data
f.file_field :image
f.submit
end