Ruby on rails Carrierwave,MiniMagick-命名错误:未定义的方法'size';零级:零级

Ruby on rails Carrierwave,MiniMagick-命名错误:未定义的方法'size';零级:零级,ruby-on-rails,ruby,ruby-on-rails-3,carrierwave,minimagick,Ruby On Rails,Ruby,Ruby On Rails 3,Carrierwave,Minimagick,在登台时,我在通过carrierwave和minimagick上传和调整图像大小时遇到以下错误。在本地,一切正常 carrierwave(0.9.0) mini_magick(3.7.0) irb(main):003:0>PicturePost.create(远程内容\u url:'http://www.imagpress.com/img/slider/slider_1.jpg') NoMethodError:nil:NilClass的未定义方法“size” from/home/deploy/a

在登台时,我在通过carrierwave和minimagick上传和调整图像大小时遇到以下错误。在本地,一切正常

carrierwave(0.9.0) mini_magick(3.7.0)

irb(main):003:0>PicturePost.create(远程内容\u url:'http://www.imagpress.com/img/slider/slider_1.jpg')
NoMethodError:nil:NilClass的未定义方法“size”
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_-magick-3.7.0/lib/mini_-magick.rb:24:在“选择处理器”中
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_-magick-3.7.0/lib/mini_-magick.rb:64:in'mogrify'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_-magick-3.7.0/lib/mini_-magick/image.rb:360:in'run_命令'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_-magick-3.7.0/lib/mini_-magick/image.rb:171:in'valid'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_-magick-3.7.0/lib/mini_-magick/image.rb:140:in'create'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_-magick-3.7.0/lib/mini_-magick/image.rb:48:in'read'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_-magick-3.7.0/lib/mini_-magick/image.rb:111:在“打开的块”中
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_-magick-3.7.0/lib/mini_-magick/image.rb:110:in'open'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_-magick-3.7.0/lib/mini_-magick/image.rb:110:in'open'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/processing/mini_magick.rb:260:in“操纵!”
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/processing/mini_magick.rb:176:in“resize_to_fill”
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/uploader/processing.rb:85:在“进程中的块”中
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/uploader/processing.rb:81:in'each'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/uploader/processing.rb:81:in'process!'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/uploader/callbacks.rb:18:in `带_回调的阻塞'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/uploader/callbacks.rb:18:in'each'
9级。。。
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/uploader/download.rb:65:in'download!'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:353:in'remote_url='1
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:203:in'remote\u content\u url='1
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/orm/activerecord.rb:44:in'remote\u content\u url='10
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active\u record/attribute\u assignment.rb:85:in“block in assign\u attributes”
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active\u record/attribute\u assignment.rb:78:in'each'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active\u record/attribute\u assignment.rb:78:in“assign\u attributes”
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active\u record/base.rb:498:在“初始化”中
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active\u record/persistence.rb:44:in'new'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active\u record/persistence.rb:44:在“创建”中
来自(irb):3
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/railties-3.2.15/lib/rails/commands/console.rb:47:in'start'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/railties-3.2.15/lib/rails/commands/console.rb:8:in'start'
from/home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/railties-3.2.15/lib/rails/commands.rb:41:in`'
来自脚本/rails:6:in'require'

无法理解为什么会发生这种情况。

看起来这是mini_magick 3.7.0的问题。看看这个

我忘了在我的新服务器上安装imagemagick。 这为我解决了这个问题

sudo apt-get install imagemagick

如果您使用的是yum软件包管理器(就像我使用AWS Opsworks一样)。你能行

yum install ImageMagick

注意:ImageMagick拼写为camelcase

当MiniMagick查找命令
mogrify
gm
但未找到其中一个时,会发生此错误

正如在另一个答案中提到的,您需要确保ImageMagick或GraphicsMagick安装了命令,如

sudo apt-get install imagemagick
但是,如果ImageMagick安装在非标准位置,并且在Rails进程路径上不可用,则也可能发生此问题。例如,如果从源代码安装到
/usr/local/bin
,则该位置可能不在路径上。在这种情况下,为确保正确设置路径,请将此行添加到
application.rb
environments/production.rb
,或其他适当的位置:

ENV['PATH']+=File::PATH_SEPARATOR++'/usr/local/bin'
请注意,根据应用程序的启动方式,您的路径可能会有所不同,例如,从命令行启动与从系统初始化文件启动,因此添加类似的行对于确保Minimagik在所有情况下都能正常工作非常重要


在Linux下,您可以通过查找pid,然后查看
/proc//environ

来检查正在运行的Rails进程的路径,如果您使用某些IDE,可能是
sudo apt-get install imagemagick
brew install imagemagick
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/man/man5/png.5
/usr/local/share/man/man5 is not writable.
...
ls -al /usr/local/share/man
sudo chown -R yourusername /usr/local/share/man/man5
brew link libpng