2013-12-09 15 views
34

ステージングで、carrierwaveとminimagickを使用して画像をアップロードおよびサイズ変更する際に次のエラーが発生しました。ローカルではすべて正常に動作します。Carrierwave、MiniMagick - NoMethodError:未定義メソッド 'size' for nil:NilClass

carrierwave(0.9.0) mini_magick(3.7.0)なぜこれが起こっている

irb(main):003:0> PicturePost.create(remote_content_url: 'http://www.imagpress.com/img/slider/slider_1.jpg') 
NoMethodError: undefined method `size' for nil:NilClass 
from /home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/mini_magick-3.7.0/lib/mini_magick.rb:24:in `choose_processor' 
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_command' 
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:in `block 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/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 `manipulate!' 
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:in `block in process!' 
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 `block in with_callbacks' 
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 levels... 
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=' 
from /home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:203:in `remote_content_url=' 
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_content_url=' 
from /home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active_record/attribute_assignment.rb:85:in `block in assign_attributes' 
from /home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active_record/attribute_assignment.rb:78:in `each' 
from /home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active_record/attribute_assignment.rb:78:in `assign_attributes' 
from /home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active_record/base.rb:498:in `initialize' 
from /home/deploy/apps/staging/blog/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.15/lib/active_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_record/persistence.rb:44:in `create' 
from (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 `<top (required)>' 
from script/rails:6:in `require' 

を把握することはできません。

答えて

53

私の新しいサーバーにimagemagickをインストールすることを忘れていた。 (私はAWS Opsworksのために午前のように)あなたがyumのパッケージマネージャを使用している場合 これは私のために

sudo apt-get install imagemagick 
+1

ありがとう、それは私の問題を解決:このために非常に多くのD –

+1

感謝を! – YoniGeek

+1

あなたはおそらく私の時間を節約しました!あなたの質問にお答えいただき、ありがとうございます+1 –

2

mini_magick 3.7.0の問題のようです。これを見てissue

1

を問題を解決しました。あなたは

yum install ImageMagick 

ノートを行うことができます。ImageMagickにはキャメルケース

6

として綴らMiniMagickがコマンドmogrifyまたはgmを探し、いずれかを見つけるために失敗したときに、このエラーが発生します。

別の答えで述べたように、あなたがImageMagickのかGraphicsMagickのは、そのようなしかし

sudo apt-get install imagemagick 

などのコマンドでインストールされているImageMagickには、標準以外の場所にインストールされている場合、この問題が発生する可能性がありますことを確認する必要がありますRailsプロセスのパスでは使用できません。たとえば、ソースから/usr/local/binにインストールする場合、その場所がパス上にない可能性があります。この場合、application.rbenvironments/production.rb、またはいくつかの他の適切な場所に次の行を追加し、あなたのパスが正しく設定されていることを確認するには:あなたのパスは、アプリケーションが起動される方法に応じて異なる場合がありますことを

ENV['PATH'] += File::PATH_SEPARATOR + '/usr/local/bin' 

注意を、例えばコマンドラインからシステムの初期化ファイルと比較して、このような行を追加することは、MiniMagickがすべての状況下で正しく動作するようにするために重要です。

Linuxでは、pidを見つけて/proc/<pid>/environを見て、実行中のRailsプロセスのパスを調べることができます。

0

IDEを使用している場合は、おそらくIDEを再起動するだけで解決できます。私はこの問題の解決策を見つけようと多くの時間を費やしています。そして、この単純な操作が私のために働いた。

+0

開発環境では奇妙な問題になる可能性がありますが、問題は開発段階ではなくステージングでのみ発生すると述べています。おそらくステージングでは 'nano'、' vim'やその他のコードエディタを使用しますが、IDEは使用しません。 – markets

0

代わりにmini_magickを使用している人は、mini_magickで画像をアップロードすると3.6が壊れ、バージョン3.7では動作しないため、gemfileでバージョンを3.5に変更してください。

+0

3.5へのダウングレードが原因です:Errno :: ENOENT - そのようなファイルやディレクトリはありません –

2

自作&ヨセミテ中心の回答:あなたはImageMagickのを再インストールする必要があります、

http://thornelabs.net/2014/12/08/libpng-not-symlinking-when-installing-imagemagick-on-os-x-yosemite.html

確かに、しかし

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. 
... 

まず、あなたのユーザー名あなたは、あなたがこれが誰かにいくつかの時間を節約できます

sudo chown -R yourusername /usr/local/share/man/man5 
brew link libpng 

希望を実行する必要がありますしない場合

ls -al /usr/local/share/man 

と権限を持っています。

-B

関連する問題