4

pngペーパークリップが付いているモデルにを保存しようとすると、エラーが発生します。

私のUserモデル:

class User < ActieRecord::Base
  attr_accessible :icon
  has_attached_file :icon, :url => "/system/users/icon/:hash.:extension",
    :hash_secret => "superSecretHashSecret",
    :styles => { :medium => "300x300>", :thumb => "100x100>" }
end

アイコンを設定しようとする例:

u = User.last
u.icon = open(Rails.root + "spec/fixtures/files/example.png")
u.save

モデルエラーの例:

:icon => ["/var/folders/43/810gn/T/example20121104-36855-1v7t136.png is not recognized by the 'identify' command."]

これと同様の質問、特にこれに似た質問を投稿した人はたくさんいますが、それらの解決策はどれも私にはうまくいきません。

command_pathが正しく設定されています:

O:~ $ which identify
/usr/local/bin/identify

development.rb

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

ただし、これはまだ問題である可能性があります。 `identifyを直接使用しようとすると、次のエラーが発生します。

O:~ $ identify workspace/app/spec/fixtures/files/example.png 
dyld: Library not loaded: /usr/lib/libltdl.7.dylib
  Referenced from: /usr/local/bin/identify
  Reason: image not found
Trace/BPT trap: 5

ここで何が起こっているかについて何か提案はありますか?

ImageMagickを再インストールしてみました

brew unlink imagemagick
brew install imagemagick

他の人はを追加することをお勧めしRmagickます。それは間違いなくペーパークリップを使用するための要件ではなく、それも役に立ちませんでした。

:style提案されている別の解決策は、プロパティを削除することです。しかし、それは解決策ではありません。画像の処理を行う必要があります。

私のプロジェクトでは、画像ではない/処理を行わないドキュメントを処理する別のモデルでペーパークリップを使用しています。だから私はそれがおそらくそれに関連していることを知っています。

この問題に対処する方法に関する他の提案はありますか?

4

4 に答える 4

9

これはImageMagickのインストールの問題です。

初挑戦

brew update
brew upgrade imagemagick

それでも問題が解決しない場合は、magick-installerスクリプトを使用してこれを解決してください: https ://github.com/maddox/magick-installer

curl https://raw.github.com/maddox/magick-installer/master/magick-installer.sh | sh

または、新しいバージョンの依存ライブラリでmagick-installerのフォークを使用します。

curl https://raw.github.com/GTSouza/magick-installer/master/magick-installer.sh | sh
于 2012-11-05T00:02:15.820 に答える
5

解決策は、をインストールすることlibtoolでした。これはここでも最高の提案でした。homebrew私の問題は、最新ではなく、マスターのチェックアウトを強制せずに更新できない状態にあるため、より複雑であることがわかりました。

将来この問題に直面する人のために、identifyコマンドがパス内にある場合でも、コマンドが実際に機能することを手動で確認することをお勧めします。

identify /path/to/some/image

失敗すると、次のように表示されます。

O:~ $ identify workspace/app/spec/fixtures/files/example.png 
dyld: Library not loaded: /usr/lib/libltdl.7.dylib
  Referenced from: /usr/local/bin/identify
  Reason: image not found
Trace/BPT trap: 5

この場合、をインストールしてみてくださいlibtool

brew install libtool

これが失敗した場合は、を実行しますbrew update。それでも失敗する場合は、最新のXcodeがインストールされていることを確認して、更新を再試行してください。

を正常に使用できれば、これが機能したことがわかりますidentity。次のようになります。

O:~ $ identify ~/workspace/app/spec/fixtures/files/example.png 
~/workspace/app/spec/fixtures/files/example.png PNG 200x201 200x201+0+0 8-bit DirectClass 66.1KB 0.000u 0:00.000

glebmからの回答もうまくいったかもしれません。私はそのインストーラーを見ていません。

于 2012-11-05T00:08:15.510 に答える
0

これは、古いバージョンのペーパークリップを新しいバージョンの互換性のないコカインジェムと一緒に使用したことが原因である可能性があります。を使用して、ペーパークリップの宝石のバージョンを更新できますbundle update paperclip。互換性に応じて、ペーパークリップとコカインのバージョンを更新します。

https://github.com/thoughtbot/paperclip/issues/1038

于 2013-07-26T19:23:20.633 に答える
0

MacでMavericksにアップグレードした後、同じ問題が発生しました。

問題を解決した手順は次のとおりです。

brew update
brew install libtool
brew link libtool
brew upgrade imagemagick
于 2013-11-04T14:59:31.817 に答える