Paperclip :: Errors :: NotIdentifiedByImageMagickError + Heroku

时间:2013-04-14 05:25:19

标签: ruby-on-rails-3 heroku imagemagick paperclip

我目前有一个使用回形针的应用程序,允许用户上传他们的广告素材。到目前为止,当用户上传图像文件时,这已经完美无缺。我们已经测试过上传.mov文件,我收到此错误:

Creative Paperclip::Errors::NotIdentifiedByImageMagickError

奇怪的是,这个错误只在Heroku上生成。我可以在本地主机上上传.mov文件。

我当前的宝石设置:

paperclip (3.4.1, 3.4.0)
paperclip-aws (1.6.7, 1.6.6)
paperclip-ffmpeg (0.10.2)
cocaine (0.5.1, 0.4.2)

Event.rb

has_attached_file :creative, 
                :processors => [:ffmpeg],
                :styles => { 
                  :thumb => [:geometry => "250x150", :format => 'png'], 
                  :custcreative => [:geometry => "275x75", :format => 'png'], 
                  :creativepreview => ["275x195",:png] 
                           },
                :url => "***", 
                :path => "***",
                :s3_domain_url => "***",
                :storage => :s3,
                :s3_credentials => Rails.root.join("config/s3.yml"),
                :bucket => '***',
                :s3_permissions => :public_read,
                :s3_protocol => "http",
                :convert_options => { :all => "-auto-orient" },
                :encode => 'utf8'

花费数小时试图弄清楚为什么它在本地工作但在Heroku上抛出错误。

我甚至尝试删除:样式设置,但仍然无效。

TIA

修改

 Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/MidPen20130413-2-1mzetus.mov[0]'

1 个答案:

答案 0 :(得分:2)

嗯,如果像我们这样的其他新手遇到同样的问题,这里就是答案。问题在于用于图像裁剪的几何方法。在railscasts中建议的方式假定文件在本地系统中并且需要更改。

OLD METHOD:

def avatar_geometry(style = :original)
@geometry ||= {}
@geometry[style] ||= Paperclip::Geometry.from_file(avatar.path(style))
end

新方法

def avatar_geometry(style = :original)
@geometry ||= {}
avatar_path = (avatar.options[:storage] == :s3) ? avatar.url(style) : avatar.path(style)
@geometry[style] ||= Paperclip::Geometry.from_file(avatar_path)
end