Только изображения процесса скрепки
Я хотел бы использовать одно файловое поле для нескольких форматов. Насколько я понимаю, Paperclip был достаточно умен, чтобы только масштабировать изображения и оставлять другие форматы в одиночку, но, похоже, это не работает для flv (который возвращает imagemagick/ident-errors). Есть ли способ немного помочь Paperclip и явно настроить конкретные форматы для масштабирования?
UPDATE:
По-видимому, эти ошибки предотвращаются с помощью: whiny = > false (спасибо fl00r), который отлично подходит для регулярных загрузок.
Однако то, что я пытаюсь сделать здесь, это загрузить файл по FTP, а затем создать новую запись по коду с файлом File.new([: путь]) в параметре вложения. Это работает как шарм для изображений, но: whiny = > false-trick больше не будет делать этого. У кого-нибудь есть советы по этому поводу?
Ответы
Ответ 1
установите для параметра :whiny
значение false:
has_attached_file :my_attach, :whiny => false ...
он не поможет peparclip обрабатывать только изображения, но он не будет вызывать ошибки, если обработка завершилась неудачно
UPD
Обработка только изображений:
has_attached_file :file,
:styles => lambda{ |a| ["image/jpeg", "image/png"].include?( a.content_type ) ? { :small => "90x90#" } : {} }
где вы можете добавить столько, сколько хотите типов содержимого в массив ["image/jpeg", "image/png"]
Ответ 2
Вы также можете использовать обратный вызов paperclip для последующей обработки изображений и инструктировать скрепки для обработки изображений. Если обратный вызов before_post_process
возвращает значение false, обработка останавливается.
before_post_process :process_only_images
def process_only_images
%w(image/jpeg, image/png,image/gif,image/pjpeg, image/x-png).include?(attachment_content_type)
end
Проверьте документацию скрепки для более подробной информации на https://github.com/thoughtbot/paperclip#events