web-dev-qa-db-ja.com

ペーパークリップ画像のアップロードRails --Paperclip :: CommandNotFoundError

Railsへの画像のアップロードを処理するためにペーパークリップを使用しています。私の開発OSXマシンでは正常に機能しましたが、Webサーバーでは次のエラーが発生します。

[Paperclip] /Users/marky/bin/identify '-format' '%wx%h' '/tmp/stream,16451,2.JPG[0]' 2>/dev/null
[Paperclip] An error was received while processing: #<Paperclip::CommandNotFoundError: Paperclip::CommandNotFoundError>
[Paperclip] /Users/marky/bin/identify '-format' '%wx%h' '/tmp/stream,16451,2.JPG[0]' 2>/dev/null
[Paperclip] An error was received while processing: #<Paperclip::CommandNotFoundError: Paperclip::CommandNotFoundError>

今ではその理由は明らかです。識別は実際には/ usr/bin /にあり、開発マシンからの/ Users/marky/bin /にはありません。私が持っています:

Paperclip.options[:command_path] = "/usr/bin"

私のdevelopment.rbですが、まだエラーが発生します。私はこれを修正する方法がわかりません、誰か助けてもらえますか?

24
Marky

Passengerを使用してアプリケーションをホストしている場合、Passengerにはログインしているユーザーと同じ$ PATH変数がないことに注意してください。 PassengerがImageMagickコマンドを表示できるかどうかを確認する良い方法は、これをerbテンプレートの1つに追加することです。

<%= `which convert` %>
<%= `echo $PATH` %>

ターミナルで同じコマンドを実行した場合の結果を比較します。もう1つの可能性は、ImageMagickが必要なライブラリを見つけられないことです。この場合、別の変数をエクスポートして、ライブラリがどこにあるかをImageMagickに知らせる必要がある場合があります。

# my config/environments/development.rb
Paperclip.options[:command_path] = "DYLD_LIBRARY_PATH='/Users/jch/Library/ImageMagick-6.6.3/lib' /Users/jch/Library/ImageMagick-6.6.3/bin"

それが-jerryを助けることを願っています

16
Jerry Cheung

Imagemagickを操作するために次のパッケージをインストールします

1) apt-get install imagemagick
2) apt-get install libmagickwand-dev
3) gem install rmagick

私はあなたが2番目のものを逃していると思います。

17
MKumar

ImageMagickをマシンにインストールできます。これらの問題は、一部のメソッドが見つからないために発生します。

ImageMagickがマシンにインストールされていることを確認するには、ターミナルで「convert」コマンドを実行するだけです。

5
Sachin R

私の場合、本番サーバー(NGINX + Passenger)の環境ファイルでペーパークリップコマンドパスオプションを設定しても機能しませんでした。

代わりに、Paperclip.rb初期化ファイルに設定しました。

Paperclip.options[:command_path] = "/usr/bin/" if Rails.env.production?
2
Adrian Teh

imagemagickを実行してインストールされているかどうかを確認します

 which convert

コンソールで。私の場合、結果は次のとおりです。

$ which convert
/usr/bin/convert

次に、次の行をconfig/environment/development.rbに追加します。これは、PaperclipにImagemagickの場所を指示します。

Paperclip.options[:command_path] = "/usr/local/bin/"
1
Sandro L