【问题标题】:Heroku, CarrierWave, MiniMagick: random tmp file missingHeroku、CarrierWave、MiniMagick:随机 tmp 文件丢失
【发布时间】:2013-04-22 15:55:30
【问题描述】:

在我的 RoR 项目中,我使用 CarrierWave + MiniMagick 并部署到 Heroku 进行生产。

我在生产中遇到这个问题,有时 tmp 文件会丢失用于图像处理。我收到此错误:

Errno::ENOENT: No such file or directory - /tmp/mini_magick20130319-2-3wq6l6.jpg

我还有其他可以工作的 XUploader 类,但这个特定的类有两个图像进程。最初我为此有两个单独的过程:

  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

这个document

【问题讨论】:

    标签: ruby-on-rails heroku imagemagick image-manipulation carrierwave


    【解决方案1】:

    heroku 会不时清空 tmp,通常我们使用 s3 或其他云存储来存储处理后的版本。您可以参考https://github.com/jnicklas/carrierwavehttps://github.com/jnicklas/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku

    他们有在 heroku 中使用carrierwave的详细演练 我以前试过,效果很好

    【讨论】:

    • 哦,是的,对不起。我的Uploader 课程中确实有这个:def cache_dir; "#{Rails.root}/tmp/uploads"; end
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2015-11-05
    相关资源
    最近更新 更多