RoR で Carrierwave/Minimagick gem を使用して単純な画像アップローダを実装するのに問題があります。
アップロード時にファイルをグレースケールに変換しようとしていますが、エラーが発生します。コードは次のとおりです。
image_uploader.rb:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
# Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
include Sprockets::Helpers::RailsHelper
include Sprockets::Helpers::IsolatedHelper
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# Process files as they are uploaded:
process :convert_to_grayscale
def convert_to_grayscale
manipulate! do |img|
img.quantize(256, Magick::GRAYColorspace)
img = yield(img) if block_given?
img
end
end
ファイルをアップロードしようとすると、次のエラーが表示されます。
uninitialized constant ImageUploader::Magick
app/uploaders/image_uploader.rb:36:in `block in convert_to_grayscale'
app/uploaders/image_uploader.rb:35:in `convert_to_grayscale'
これは Magick::GRAYColorspace 列挙定数によるものだと思います。これが機能しない理由はありますか?