6

私の 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

このドキュメントは.

4

1 に答える 1

0

heroku は時々 tmp を空にします。通常、s3 または他のクラウド ストレージを使用して、処理済みのバージョンを保存します。https://github.com/jnicklas/carrierwaveおよび https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Herokuを参照してください。

heroku での Carrierwave の使用に関する詳細なウォークスルーがあり、以前に試してみましたが、うまくいきました

于 2013-04-29T04:30:24.720 に答える