【发布时间】:2020-01-17 19:18:23
【问题描述】:
在生产中我的代码运行正常,但是当我尝试上传时我的代码在本地回滚
所以我尝试强制更新接受更新上传!这给了我这个错误信息:
EmployeesController#photo_upload 中的 ActiveRecord::RecordInvalid
验证失败:使用 MiniMagick 操作照片失败,可能不是图像?原始错误:您必须安装 ImageMagick 或 GraphicsMagick
因此,基于此,我发现它与 MiniMagick 有关,在我的上传文件中进行了一些测试,我发现如果我评论了这一行:
process resize_to_fill: [100, 100]
问题消失了。问题是我需要将矩形图像加载为方形图像的那条线,因此无需使用每张图片和 CSS。所以我正在寻找一个长期的解决方案
class PhotoUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process resize_to_fill: [100, 100]
if Rails.env.production?
storage :fog
else
storage :file
end
def store_dir
end
def extension_whitelist
%w[jpg jpeg gif png]
end
end
编辑:
基于几个提到在本地安装 ImageMagick 的 cmets,我进行了研究,因为我的部署是在 Heroku 中,所以它有点不同,但事实证明 Heroku 已经安装了 ImageMagick,所以这显然不是问题。对于那些想要证实的人,请输入:
heroku run identify -version
【问题讨论】:
-
您是否使用 minimagick 安装了 ImageMagick 或 GraphicMagick?
-
如果您查看第一行中的mini magick gem docs,他们会解释:MiniMagick “ImageMagick 或 GraphicsMagick 命令行的 ruby 包装器。”所以MiniMagick其实就是ImageMagick和GraphicsMagick
-
但是 minmagick 会自动安装 ImageMagick 吗?如果没有,那么您必须先安装它。仅仅因为它说它是一个包装器,并不意味着它安装了 ImageMagick 或 Graphicsmagick。在您引用的同一文档中,它在“要求”下说:
ImageMagick or GraphicsMagick command-line tool has to be installed. -
当然,我一直在研究如何在 gem 中安装 image_magick_cli(每个解释都是针对非 gem 方法,没有考虑 CarrierWave)。还没有弄清楚如何或是否是正确的做法,仍在阅读文档
-
我也在查看active storage docs,它看起来不错,但该应用程序已经通过 CarrierWave::MiniMagick 加载了许多图像,因此实施更改可能需要一些时间,而没有考虑到一些之前上传的文件可能会在此过程中丢失。
标签: ruby-on-rails local carrierwave minimagick