私はこれに対して頭を数日間叩き続けてきました。最近、画像アップローダーが正しく動作しなくなりました。私はいくつかの可能性を調査しましたが、提案された解決策のどれも私の場合うまくいきませんでした。
エラーメッセージは次のとおりです。
#<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError>
詳細は次のとおりです。
development.rb
には適切なパスが含まれています(which identify
を使用して正しいことを確認しました)
Paperclip.options[:command_path] = "/usr/local/bin/"
Gemfile.lock
(関連部分)
Paperclip (3.4.1)
activemodel (>= 3.0.0)
activerecord (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.0)
モデル(教室オブジェクトを更新していますが、写真はロケーションモデルにあります。(Classroom has_one :location, :as => :locatable)
モデルlocation.rb
class Location < ActiveRecord::Base
## Paperclip method for uploading location images
has_attached_file :picture, :styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"}, :convert_options => {:show => "-gravity center"}
has_attached_file :building_sign, :styles => { :show => ["1200x500#", :jpg], :medium => ["300x300#", :jpg], :thumb => ["100x100#", :jpg] }, :convert_options => {:show => "-gravity center"}
belongs_to :locatable, :polymorphic => true
belongs_to :location_type
validates :name, :presence => true
validates :latitude, :presence => true,
:length => {:within => 9..18},
:numericality => true
validates :longitude, :presence => true,
:length => {:within => 9..18},
:numericality => true
end
コントローラclassrooms_controller.rb
def update
@classroom = Classroom.find_by_facility_code_heprod(params[:id].upcase)
respond_to do |format|
if @classroom.update_attributes(params[:classroom])
format.html { redirect_to(@classroom, :notice => 'Classroom was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @classroom.errors, :status => :unprocessable_entity }
end
end
end
私が試したこと。
以下を含むgemバージョンのバリエーションを試しました
# variation 1
gem 'Paperclip', '~> 2.8.0'
gem "cocaine", "=0.3.2"
# variation 2
gem "Paperclip", "~> 3.4.0"
gem "cocaine", "= 0.4"
# variation 3 (which is what is reflected in the included Gemfile.lock info above).
gem "Paperclip", "~> 3.4.0"
スケーリングを削除すると、
:styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"},
:convert_options => {:show => "-gravity center"}
アップロードは機能しますが、スケーリングが必要です;-)
誰かが私が欠けているものを見ることができますか?
私はこの問題を解決しました。 brewはCellar、/ usr/local/Cellarを呼び出すディレクトリを作成します。ImageMagickが2つない場合は、ImageMagick-Ruby182という名前が付いているので、brew uninstall ImageMagick-Ruby182と通常のimagemagickを実行すると、そしてイメージマジックを再インストールします。
この問題に遭遇したところ、ghostscriptがインストールされていなかったことが判明しました。私はスコットコーンウェルの助言を得て、エラーのサイレンシングを削除し、ゴーストスクリプトが利用できないために変換が失敗していると判断しました。
brew install ghostscript
私たちの問題を修正しました。
私のサーバーはLinuxを使用していますが、同じ問題が発生しました。私はテストするMacを持っていないので、それを行う方法を正確に伝えることはできませんが、うまくいけば、これはあなたを正しい方向に向けます。
これはImageMagick 6.8.5-5、Paperclip 3.4.2、コカインの最新バージョン、Rails 3.2.13:
Paperclip gemのgeometry_detector_factory.rbに移動し、identify呼び出しの周りの2行をコメント化しました:(この手順は必要ありません。問題を特定するために行ったことを説明しているだけです)
#silence_stream(STDERR) do
Paperclip.run("identify", "-format '%wx%h,%[exif:orientation]' :file", :file => "#{path}[0]")
#end
対応する「end」ステートメントとともに。これにより、「identify」コマンドを実行したときにコマンドラインでエラーを確認できました。
基本的にエラーは言った:「この画像形式のデコードデリゲートはありません」
あなたはおそらくそのエラーを調べてそれを理解することができますが、基本的に私がしたことはusr/local/binに移動して実行しました:(インストールしたものを見たいのでなければ、必要ありません) =
convert -list configure
dELEGATES行を探します。 ImageMagickが動作している別のLinuxサーバーがあり、2つを比較した後、新しいサーバーには2つのデリゲートしかインストールされていないことに気付きました。私は走ることができました:
yum install ImageMagick-devel
そして、make、make installでImageMagickを再コンパイルすると、問題なく動作しました。
また、ImageMagickサイトでデリゲートを手動で見つけて、1つずつインストールすることもできますが、そのライブラリでかなりカバーされていました。
ImageMagickをデバッグしますか?そのための時間は誰にもありません!
Paperclip 3.5.2、コカイン0.5.3、ImageMagic 6.8.8を使用している私のウィンドウ開発環境で問題が発生しました。
解決策は追加することでした:
Paperclip.options[:command_path] = 'C:\Program Files\ImageMagick-6.8.8-Q16'
config/environment/development.rb
同様の問題がありましたが、古いPaperclip(3.0.2)です。
私の場合、私はそれを修正しました:
gem 'cocaine', '0.3.2'
Libtool brew install libtool
を再インストールするとうまくいきました。
参考までに:
brew uninstall libtool
brew install libtool
brew uninstall jpeg
brew install jpeg
brew link --overwrite jpeg
brew unlink freetype && brew link freetype
Image_magicに同じ問題があり、本番環境ではPaperclip機能を壊していましたが、開発中ではありませんでした(奇妙なことに、私は知っています)。しかし、gemfileとGemfile.lockからimagemagickをローカルに削除し(バンドルのインストールとそのすべてのものを実行)、herokuの本番環境にデプロイした後でも、エラーは本番環境に残りました! (奇妙なことです、私は知っています)。
トリックを実行することになったのは実行中でした:
$ heroku repo:purge_cache -a myAppName
(以下から取得: https://github.com/heroku/heroku-repo#purge_cache )
アプリをデプロイすると、Herokuはデプロイを高速化するために、アセットやインストールされたgemなどをキャッシュします。これは優れた機能ですが、副作用が生じる場合があります。この場合、imagemagick gemの何かがプロダクションのキャッシュで「スタック」しているようです。そのため、パージによって問題が解決されました(パージ後、アプリは次のデプロイ時にゼロから再構築されます)
ldconfigコマンド を使用して最新の共有ライブラリに必要なリンクとキャッシュを作成するように動的リンカーのランタイムバインディングを構成すると、同じ問題が発生し、解決しました。
したがって、次のコマンドを使用する必要があります。
Sudo ldconfig /usr/local/lib
実際、私は how-to-install-image-magick-and-setup-Paperclip の手順を使用してimagemagickを再インストールすることをお勧めします。
ImageMagickのアップグレードを試みたと既におっしゃっていましたが、同じ問題があり、ImageMagick 6.8.0-10 2013-03-03
にアップグレードすると解決しました。
Paperclip gemとcocaine gemのバージョンを更新してください。 Set Paperclip version:3.4.1 Set Cocaine version:0.5。
私は同じ問題に直面し、私の問題はすでにPaperclip gem github issuesにありました