私の RoR プロジェクトでは、CarrierWave + MiniMagick を使用しており、本番用に Heroku にデプロイしています。
本番環境で、画像処理用の tmp ファイルが欠落している場合があるというこの問題があります。次のエラーが表示されます。
Errno::ENOENT: No such file or directory - /tmp/mini_magick20130319-2-3wq6l6.jpg
動作する XUploader クラスは他にもありますが、この特定のクラスには 2 つの画像プロセスがあります。当初、これには2つの別々のプロセスがありました。
process :resizer
def resizer
resize_to_fit(model.jrac_image_width, model.jrac_image_height)
end
process :cropper
def cropper
manipulate! do |img|
img.crop("442x190+#{model.jrac_crop_x}+#{model.jrac_crop_y}")
img
end
end
:cropper
しかし、tmpファイルが存在しないと言ってエラーが発生したとのことでした。コードを次のように変更しようとしましたが、一度だけ動作することを願っています。
process :resize_and_crop
def resize_and_crop
manipulate! do |img|
img.resize("#{model.jrac_image_width}x#{model.jrac_image_height}") # resize_to_fit
img.crop("442x190+#{model.jrac_crop_x}+#{model.jrac_crop_y}") # cropper
img
end
end
残念ながら、まだ同じエラーが発生しています。
問題がどこにあるのか誰にもわかりませんか?それが Heroku なのか CarrierWave なのか ImageMagick なのかわかりません。
編集
Uploader
クラスにもこのコードがあります
def cache_dir
"#{Rails.root}/tmp/uploads"
end
このドキュメントは.