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正在产生不同的行为。两者现在都是单独的问题。
答案 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'