web-dev-qa-db-ja.com

railsペーパークリップと乗客は「「identify」コマンドでは認識されません」

写真をアップロードすると、モデルが検証に失敗します。検証がない場合でもエラーが発生し、次のエラーが返されます。

/tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command. and     
/tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command.

アップロードから画像処理を削除したため、これはImageMagickとは関係がないと確信しています。また、.txtファイルなど、さまざまなMIMEタイプをアップロードしてみました。

さらに、私はうまくいくかもしれない何かを見つけました。ブログの投稿によると、私の環境(この場合は、development.rb)に次のように記述しています。

Paperclip.options[:command_path] = "/opt/local/bin"
42
JP Silvashy

これはImageMagickに関連しています。 command_pathオプションは、identifyがインストールされている場所を指す必要があります。コマンドラインから、これをwhich identifyで判別できます。

$ which identify
/some/path/to/identify

その後、command_pathをそのパスに設定します(config/environments/development.rb内):

Paperclip.options[:command_path] = "/some/path/to"
49
Ryan McGeary

これは、Paperclipのかなり古いバージョン(たとえば、バージョン2.4.x)と、互換性のない新しいバージョンのCocaine gemを使用することによっても発生します。

15
Bill Lipa

私は次のようにしてこれを解決することができました:

brew uninstall imagemagick
brew install imagemagick
6
Mark Ross

これは、OS XをLionにアップグレードしたときに起こりました。

それを解決...

  • brew listを実行して、すべてのパッケージを表示し、これをどこかに保存します

  • homebrewのアンインストール(このページの「アンインストール」を参照 https://github.com/mxcl/homebrew/wiki/Installation

  • 通常の方法で自作を再インストールする

    Ruby -e "$(curl -fsSL https://raw.github.com/Gist/323​​731 )"

  • brew install ghostscriptbrew install imagemagickなど、他のすべてのパッケージを再インストールする

Ghostscriptを再インストールする前に、ここにある提案を適用する必要があることに注意してください: https://github.com/mxcl/homebrew/issues/6381

brew edit ghostscript

次に、def patchesブロックをGhostscriptクラスの最後に追加します。

class Ghostscript < Formula
    .... existing code here ....

    def patches
        { :p0 => 'http://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/print/ghostscript/patches/patch-ak' }
    end
end 

上記のパッチは、これを読んだ時点でマージされている可能性があります。

その後、imagemagickは再びJPEGを正しく検出しました。

TL; DRは、homebrew、ghostscript(Lionのパッチを適用)、およびimagemagickを完全にアンインストールして再インストールします。

4
Brian Armstrong

Brewをインストールすることで機能しました http://mxcl.github.com/homebrew/

そして、私はタイプしました:

brew install imagemagick

それとその後

gem install rmagick

次に、environment/development.rbとinitialize/Paperclip.rbに手動で入力したオプションパス(Paperclip.options [:command_path] = "...")を削除しました

Gmagicファイルにrmagickを追加しました。サーバーを再起動し、それは魅力のように働きました!

3
Philip

これは http://arglebargle.posterous.com/path-environment-variable-for-Rails-using-pas から機能しました

次のようなものをVirtualHost(または乗客が設定されている場所)に配置します。

SetEnv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/mysql/bin
2
Les Freeman

最新バージョンの名前にコロンが含まれているファイルをアップロードしようとした場合にも、このエラーメッセージが表示されます。

1
Ninjaxor

私があまり見ていない、潜在的なソリューションをもう1つ追加するには、ldconfigです。

たった1日半かけて追跡したのと同じ問題がありました。追加のpngおよびjpegサポートを使用してImageMagickをソースから適切に再インストールし、LD_LIBRARY_PATHおよびDYLD_LIBRARY_PATHを環境変数に追加しました。本番環境の構成でPaperclipの:command_pathオプションを設定しました。 ImageMagickコマンドはコマンドラインから機能しましたが、ペーパークリップの問題は何も修正されませんでした。

ついにldconfigが言及されたのを見て、気まぐれで試してみましたが、うまくいきました。

Sudo ldconfig

Apacheまたはハードウェアを再起動することで同じことを達成できたかもしれませんが、私は自分でそれを実行する立場にありませんでした。

1
sunkil

通常は、identifyコマンドへのパスを指定するのに役立ちます。

Paperclip.options[:command_path] = "/your/path/to/identify"

..他の人が述べたように。しかし、バージョンの不一致がある場合にも問題が発生する可能性があります。最近、アプリケーションのRuby-on-Railsバージョンを(Rails 3.1.10に)更新しましたが、Paperclip gemを更新するのを忘れました。Paperclipのバージョンを2.8.0に更新した後、再び動作しました。

1
0x4a6f4672

もしあなたがビデオをアップロードしようとしているなら、おそらく 'identify'は作業をffmpegに委任しようとします。例

   identify Desktop/00-ScalingRails-Introduction.mp4      [alaa@Zero>/home/alaa]
   identify: delegate failed `"ffmpeg" -v -1 -vframes %S -i "%i" -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z"' @ error/delegate.c/InvokeDelegate/1061.
   identify: unable to open image `/tmp/magick-XXHF4ImT.pam':  @ error/blob.c/OpenBlob/2498

この例では、ffmpegをインストールすると、検証エラーのリストからエラーメッセージが削除されました

0
Ala'a Mohammad

それは私にも起こりました、私は上記のすべての方法を試しました。ペーパークリップのバージョンを変更するだけで、すべてが正常に動作します。

0
user1611237

OSX + MAMP + Passenger + Paperclipを使用していて、command_pathを設定し、brewを介してimagemagickが正しくインストールされていることを確認した後、passengerのtempおよびuploadディレクトリを書き込み可能なものに正しく設定しても、問題が発生しました。

解決策は、/ Applications/MAMP/Library/bin/envvarsにあるMAMPのenvvarsファイルを編集し、エクスポートDYLD_LIBRARY_PATH行をコメント化することでした。

つまり、言う行を変更します

export DYLD_LIBRARY_PATH

# export DYLD_LIBRARY_PATH

次にMAMPを再起動し、画像が適切にアップロード/サイズ変更されているときの高揚感を感じてください。

0
petrocket

ただ言うと、それが何を意味するかについて、このエラーメッセージを表示することもできます。

私の場合、Zipから書き込み、このリソースをPaperclipに渡した後にファイルをフラッシュするのを忘れたため、ファイルサイズは0バイト長でした。

このスレッドから他の回答を読む前に、お好みのビューアで実際にファイルを開くことができることを確認するのは興味深いかもしれません:)

0
Olivier Amblet

あなたがMacユーザーで、OSを10.8にアップデートしてからこれが問題になっただけの場合は、ここで説明されているように、X11の問題である可能性があります http://support.Apple.com/kb/HT529 =

〜/ path/to/imageを特定します

上記の修正をすべて試しても、うまくいきませんでした。 http://xquartz.macosforge.org/landing/ からXQuartzをインストールしましたが、今は再び動作しています。

他の人も助けるかもしれません...

0
edhamilton812