我正在使用Heroku和Amazon AWS(S3)在线迁移我的应用程序,并且遇到了profilepic
模型的奇怪错误。
此模型管理个人资料照片。它由2个Paperclip附件和一些其他字段组成,并且依赖于另一个名为Professionnel
的模型。
以下是模型:
class Profilepic < ApplicationRecord
belongs_to :professionnel
has_attached_file :image, styles: { original: "6000x6000", editable: "1200x1200", thumbnail: "400x400#"}
validates_attachment :image, content_type: { content_type: ["image/jpeg", "image/gif", "image/png"] }, size: {less_than: 10.megabytes}
has_attached_file :finalimage, styles: { medium: "500x500", small: "200x200"}, processors: [:cropper]
attr_accessor :crop_x, :crop_y, :crop_w, :crop_h
end
第一个附件:图像是用户上传的图像。第二个图像(:finalimage)是Professionnel
用户编辑后的裁剪图像(使用cropper.js)
一切都在当地完美运作
但是,当图像上传时,下面的一些代码返回 Paperclip :: Errors :: NotIdentifiedByImageMagickError
触发此错误的代码位是:
nouvelleppic.ratiolongdivlarg = Paperclip::Geometry.from_file(nouvelleppic.image.path(:original)).width / Paperclip::Geometry.from_file(nouvelleppic.image.path(:original)).height
在这段代码中,我在Paperclip几何函数的帮助下发现宽度/高度比。
不确定是什么错。它在本地完美运行,我在查询之后:图像已成功保存到我的S3存储桶中(我在S3控制台中检查过)
我需要这个比例来创建视图,允许用户裁剪图像并将其转换为:finalimage。这很有趣,当迁移到Heroku / S3时它不起作用,因为它是Paperclip的简单几何函数。上传没问题...
编辑编辑
似乎确定了问题:
https://github.com/thoughtbot/paperclip/issues/2198
我刚检查了Heroku Cedar14堆栈上的Imagemagick版本:6.7.7-10 !!
Version: ImageMagick 6.7.7-10 2016-11-29 Q16 http://www.imagemagick.org
如上面的git线程所示,有没有办法在Heroku上升级ImageMagick?
这个帖子How can I use the latest version of Imagemagick on Heroku?似乎暗示我们可以这样做(第二个答案)??
答案 0 :(得分:0)
回答你的第二个问题。在heroku上更新Image Magic的方法是使用buildpack。就像你现在拥有的Ruby buildpack一样,你必须添加一个Image Magic buildpack。 Heroku有一个专门用于Image Magic buildpacks的页面:
https://elements.heroku.com/search/buildpacks?utf8=%E2%9C%93&q=imagemagick
这个(下面)似乎是最受欢迎的,但随意浏览: https://elements.heroku.com/buildpacks/mcollina/heroku-buildpack-imagemagick