在choose_processor上加载Rails3 MiniMagick错误

时间:2014-01-01 15:49:38

标签: ruby-on-rails-3 carrierwave minimagick

rails 3.2.13应用程序在localhost和服务器上运行(在开发模式下)。在localhost中,应用程序通过carrierwave和MiniMagick正确加载图像。

在服务器上,出现错误

undefined method `size' for nil:NilClass

,完整的堆栈引导如下:

mini_magick (3.7.0) lib/mini_magick.rb:24:in `choose_processor'
mini_magick (3.7.0) lib/mini_magick.rb:64:in `mogrify?'
mini_magick (3.7.0) lib/mini_magick/image.rb:360:in `run_command'
mini_magick (3.7.0) lib/mini_magick/image.rb:171:in `valid?'
mini_magick (3.7.0) lib/mini_magick/image.rb:140:in `create'
mini_magick (3.7.0) lib/mini_magick/image.rb:48:in `read'
mini_magick (3.7.0) lib/mini_magick/image.rb:111:in `block in open'
mini_magick (3.7.0) lib/mini_magick/image.rb:110:in `open'
mini_magick (3.7.0) lib/mini_magick/image.rb:110:in `open'
carrierwave (0.9.0) lib/carrierwave/processing/mini_magick.rb:260:in `manipulate!'

其他帖子暗示它可能是
a miniMagick version issue。但localhost版本与服务器版本相同,如carrierwave,rails,OSX ......

根据模块文档,似乎没有处理器被选中。因此安装可能出错了。

编辑这个问题可能有两个问题即将出现:不同版本的MiniMagick正在产生不同的行为。两者现在都是单独的问题。

2 个答案:

答案 0 :(得分:1)

问题在于Passenger v3,以及它在Apache启动时的行为方式。 (乘客4显然没有问题)

根据this proposal,通过编辑开发结束和/或生产环境文件,解决方案在任何情况下均相同:

  ENV['PATH'] = "/usr/local/bin:#{ENV['PATH']}"

答案 1 :(得分:0)

将你的识别,转换和其他链接链接到/ usr / local / bin(或/ usr / bin),它会起作用。

$ which identify
/whatever/identify

$ sudo ln -s /whatever/identify /usr/local/bin

$ which identify
/usr/local/bin/identify

你需要安装:

gem 'mini_magick', '~> 3.5.0'