【发布时间】: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