Carrierwave - ошибка при обработке изображений - PullRequest
5 голосов
/ 24 февраля 2011

Проблема заключается в следующей ошибке, которая возникает на монгоидах save! action.

Mongoid::Errors::Validations: Validation failed - Img failed to be processed.
~/.rvm/gems/ruby-1.8.7-p249/gems/mongoid-2.0.0.rc.7/lib/mongoid/persistence.rb:234:in `fail_validate!'
~/.rvm/gems/ruby-1.8.7-p249/gems/mongoid-2.0.0.rc.7/lib/mongoid/persistence.rb:75:in `save!'
./app.rb:29:in `POST /upload'

Настройка в основном следующая:

require "sinatra"     # 1.1.2
require "mongoid"     # 2.0.0.beta.19
require "rmagick"     # 2.12.2
require "carrierwave" # 0.5.1
require "carrierwave/orm/mongoid"
require 'carrierwave/processing/rmagick'
....


Mongoid.database = Mongo::Connection.new('somehost', 1234).db('test')

class Uploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :file

  def store_dir
    "uploads"
  end

 process :resize_to_fit => [80, 80]
end


class Image
  include Mongoid::Document

  mount_uploader :img, Uploader
end


....

post '/upload' do
  @img = Image.new
  @img.img = params[:file]
  @img.save!
  redirect '/'
end

глюк где-то в обработке:

process :resize_to_fit => [80, 80]

Если я уберу эту строку. Все работает как положено.

1 Ответ

7 голосов
/ 26 февраля 2011

Хорошо. Я не проследил следы достаточно глубоко: Проблема была в отсутствующем jpeg-делегате в ImageMagick. Естественно, обработка jpeg-файлов не удалась.

Решением было переустановить ImageMagick из исходного кода.

Тем не менее, довольно непрозрачно, когда Mongoid генерирует ошибку, которая вызывается из carrierwave, потому что она получает ошибку от RMagick, которая была вызвана ImageMagick.

Тем не менее. В ретроспективе это вполне очевидно: -)

...