2012年03月22日

Ruby on Rails Rails3 processing: パス is not recognized by the 'identify' command

processing: パス is not recognized by the 'identify'


画像をアップロードして表示しようとした時に発生したエラーです。

環境


ruby 1.9.3
rails 3.1.3
rmagick 2.13.1
ImageMagick 6.6.7-10

解決策


identifyのエラーで検索すると大抵は、enviroment.rbに
Paperclip.options[:command_path] = "C:/ImageMagick-6.6.2-Q16/"

こんな感じで追記しろとあったが、自分は解決しなかった。
しょうがないので、
そのエラーを吐き出している場所を探してみました。
$ vi Rails.root/vendor/bundler/ruby/1.9.1/gems/paperclip-2.4.5/lib/paperclip/geometry.rb

raise(NotIdentifiedByImageMagickError.new("#{file_path} is not recognized by the 'identify' command."))


18~30行目あたりのself.from_fileメソッドの上記コードで出力されているようです。
ここらへんでデバッグをしつつ、
identifyコマンドをフルパスで書いてみたりとやっていたところ
jpg形式はエラーにならずpng形式がエラーになっていた。
(PNGしか通さない仕様だったため気づかなかった)

ということは、単純にpingをサポートしてないだけじゃん?ということになり
・サポートできる拡張子を表示
$ convert -list format

やっぱりPNGが入っていなかった。
# yum -y install zlib
# yum -y install libjpeg-devel
ImageMagick再Install
# cd ??/ImageMagickxx/
# ./configure && make && make install
# convert -list format

これで解決
posted by RicK at 17:35| Comment(0) | TrackBack(0) | 日記