ind*_*dex 6 image-manipulation ruby-on-rails imagemagick heroku carrierwave
在我的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
Run Code Online (Sandbox Code Playgroud)
但它说我在: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
Run Code Online (Sandbox Code Playgroud)
但不幸的是,仍然遇到同样的错误.
有谁知道问题出在哪里?我不知道它是用Heroku还是CarrierWave或ImageMagick?
编辑
我的Uploader课上也有这个代码
def cache_dir
"#{Rails.root}/tmp/uploads"
end
Run Code Online (Sandbox Code Playgroud)
至于这份文件.
heroku 会不时清空 tmp,通常我们使用 s3 或其他云存储来存储处理后的版本。您可以参考https://github.com/jnicklas/rierwave和 https://github.com/jnicklas/rierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku
他们有关于在 Heroku 中使用载波的详细演练,我之前已经尝试过并且它有效
| 归档时间: |
|
| 查看次数: |
3000 次 |
| 最近记录: |