gpt4 book ai didi

ruby-on-rails - Heroku、CarrierWave、MiniMagick : random tmp file missing

转载 作者:行者123 更新时间:2023-12-04 16:11:03 26 4
gpt4 key购买 nike

在我的 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 上也有此代码类(class)
  def cache_dir
"#{Rails.root}/tmp/uploads"
end

这个 document .

最佳答案

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

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

关于ruby-on-rails - Heroku、CarrierWave、MiniMagick : random tmp file missing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16270926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com