賢者の皆さん、こんにちは。
Rails 3のCarrierWaveでMiniMagickを使用して、次の手順に従って画像のサイズを変更して保存しようとしています: http://carrierwave.rubyforge.org/rdoc/classes/CarrierWave/MiniMagick.html
無加工で画像をアップロードできます。画像がアップロードされ、ディレクトリとアプリケーションで見ることができます。しかし、画像に対して処理を実行しようとすると、manipulate!
メソッド内のブロックが呼び出されません。どうすればこれを解決できるか知っていますか?
動作する次のアップローダーがあります。
class MyContentImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
end
このコードを使用すると、フォームを使用して画像をアップロードし、結果ページで表示できます。すべてが桃です。
次のように、アップローダーに簡単なサイズ変更を追加しました。
class MyContentImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process resize_to_fit: [200,200]
end
プロセス呼び出しを追加した後、画像はアップロードされませんが、エラーも表示されません。アップローダにカスタム メソッドを追加しようとしましたが、同じ結果が得られました。
class MyContentImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
def do_stuff:
manipulate! do |img|
img = img.resize_to_fit(200,200)
end
end
end
何も起こりません。イメージはサーバー上で更新されませんが、エラーは表示されません。raise
メソッドにいくつかの呼び出しを配置しdo_stuff
て、呼び出しがどこまで実行されているかを確認しました。do_stuff
メソッドが呼び出されていることがわかりますが、内部のブロックmanipulate!
は呼び出されていません。これはどのように起こっているのでしょうか?この問題をどのようにトラブルシューティングしますか?
追加情報: config/initializers/carrierwave.rb 内に次のコードがあるため、処理が有効になっていると思います。
CarrierWave.configure do |config|
config.storage = :file
config.enable_processing = true
end
私は使っている:
- レール 3.2.12
- キャリアウェーブ 0.8.0
- ミニマジック 3.5.0