写真をアップロードすると、モデルが検証に失敗します。検証がない場合でもエラーが発生し、次のエラーが返されます。
/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"
これは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"
これは、Paperclip
のかなり古いバージョン(たとえば、バージョン2.4.x)と、互換性のない新しいバージョンのCocaine
gemを使用することによっても発生します。
私は次のようにしてこれを解決することができました:
brew uninstall imagemagick
brew install imagemagick
これは、OS XをLionにアップグレードしたときに起こりました。
それを解決...
brew list
を実行して、すべてのパッケージを表示し、これをどこかに保存します
homebrewのアンインストール(このページの「アンインストール」を参照 https://github.com/mxcl/homebrew/wiki/Installation )
通常の方法で自作を再インストールする
Ruby -e "$(curl -fsSL https://raw.github.com/Gist/323731 )"
brew install ghostscript
brew 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を完全にアンインストールして再インストールします。
Brewをインストールすることで機能しました http://mxcl.github.com/homebrew/
そして、私はタイプしました:
brew install imagemagick
それとその後
gem install rmagick
次に、environment/development.rbとinitialize/Paperclip.rbに手動で入力したオプションパス(Paperclip.options [:command_path] = "...")を削除しました
Gmagicファイルにrmagickを追加しました。サーバーを再起動し、それは魅力のように働きました!
これは 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
最新バージョンの名前にコロンが含まれているファイルをアップロードしようとした場合にも、このエラーメッセージが表示されます。
私があまり見ていない、潜在的なソリューションをもう1つ追加するには、ldconfig
です。
たった1日半かけて追跡したのと同じ問題がありました。追加のpngおよびjpegサポートを使用してImageMagickをソースから適切に再インストールし、LD_LIBRARY_PATH
およびDYLD_LIBRARY_PATH
を環境変数に追加しました。本番環境の構成でPaperclipの:command_path
オプションを設定しました。 ImageMagickコマンドはコマンドラインから機能しましたが、ペーパークリップの問題は何も修正されませんでした。
ついにldconfig
が言及されたのを見て、気まぐれで試してみましたが、うまくいきました。
Sudo ldconfig
Apacheまたはハードウェアを再起動することで同じことを達成できたかもしれませんが、私は自分でそれを実行する立場にありませんでした。
通常は、identifyコマンドへのパスを指定するのに役立ちます。
Paperclip.options[:command_path] = "/your/path/to/identify"
..他の人が述べたように。しかし、バージョンの不一致がある場合にも問題が発生する可能性があります。最近、アプリケーションのRuby-on-Railsバージョンを(Rails 3.1.10に)更新しましたが、Paperclip gemを更新するのを忘れました。Paperclipのバージョンを2.8.0に更新した後、再び動作しました。
もしあなたがビデオをアップロードしようとしているなら、おそらく '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をインストールすると、検証エラーのリストからエラーメッセージが削除されました
それは私にも起こりました、私は上記のすべての方法を試しました。ペーパークリップのバージョンを変更するだけで、すべてが正常に動作します。
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を再起動し、画像が適切にアップロード/サイズ変更されているときの高揚感を感じてください。
ただ言うと、それが何を意味するかについて、このエラーメッセージを表示することもできます。
私の場合、Zipから書き込み、このリソースをPaperclipに渡した後にファイルをフラッシュするのを忘れたため、ファイルサイズは0バイト長でした。
このスレッドから他の回答を読む前に、お好みのビューアで実際にファイルを開くことができることを確認するのは興味深いかもしれません:)
あなたがMacユーザーで、OSを10.8にアップデートしてからこれが問題になっただけの場合は、ここで説明されているように、X11の問題である可能性があります http://support.Apple.com/kb/HT529 =
〜/ path/to/imageを特定します
上記の修正をすべて試しても、うまくいきませんでした。 http://xquartz.macosforge.org/landing/ からXQuartzをインストールしましたが、今は再び動作しています。
他の人も助けるかもしれません...