Базовое изменение размера с помощью скрепки/imagemagick не работает

Я создаю приложение Rails 3.1 и использую S3 и скрепку для хранения фотографий, но продолжаю получать следующую ошибку:

RuntimeError (Style thumb has no processors defined.):

Вот соответствующие строки из моей фотомодели:

has_attached_file :photo,
:default_style => :original,
:styles => {:thumb => "150x150>"},
:url => "uploads/photos/:id/photo.:extension",
:path => "uploads/photos/:id/photo.:extension",
:storage => :s3

Вот код вокруг строки 49 в контроллере фотографий:

@photo = current_user.photos.new
@photo.caption = params['Filename']
# first save so that we can render a row
@photo.save
@photo.photo = params['Filedata']

Thread.new do 
  # second save to upload the photo
  @photo.save
end

Любые идеи относительно того, что я делаю неправильно?


person Chris Bisignani    schedule 21.09.2011    source источник
comment
Установлены ли у вас ImageMagick и инструмент convert в месте, где Paperclip может их найти?   -  person tadman    schedule 21.09.2011
comment
которые конвертируют -> /usr/local/bin/convert, и у меня есть Paperclip.options[:command_path] = /usr/local/bin/ в моем файле среды development.rb...   -  person Chris Bisignani    schedule 22.09.2011


Ответы (3)


Прочитав документацию по скрепке по процессорам, мне кажется, что процессор по умолчанию (Paperclip::Thumbnail) не привязывается. Вы можете попробовать добавить его вручную с помощью:

:processors => [:thumbnail]
person topek    schedule 21.09.2011
comment
Ну, это по крайней мере изменило ошибку. Сейчас это: You might have expected an instance of Array. The error occurred while evaluating nil.[]): app/controllers/photos_controller.rb:49:in 'create' - person Chris Bisignani; 22.09.2011
comment
Не могли бы вы показать нам код строки 49 в PhotosController? - person topek; 22.09.2011
comment
зачем ты делаешь это двойное сохранение, я такого раньше не видел. Это связано с хранилищем S3? Разве не достаточно просто сказать @photo = current_user.create_photo(params[:photo]) и @photo.save? - person topek; 23.09.2011
comment
Нет, не будет. Это связано с хранилищем s3, да. Мне нужно иметь идентификатор изображения, когда метод возвращается, но я не хочу ждать, пока фотография будет загружена на s3. - person Chris Bisignani; 26.09.2011

Я понял проблему. Я переопределял метод класса настроек по умолчанию для Paperclip в инициализаторе.

person Chris Bisignani    schedule 26.09.2011

Для пользователей Mac OSX:

установка homebrew и запуск

brew install imagemagick

сделал трюк для меня.

PS. Если установка imagemagick приводит к чему-то вроде этого:

Ошибка: этап связывания не завершен успешно. Формула построена, но не имеет символической ссылки в /usr/local.

бегать:

sudo brew link imagemagick
person anxiety    schedule 10.10.2011