Attachment_fu или Скрепка для Rails3

Я только что обновился до rails3, и когда я установил мой обычный плагин attachment_fu не удалось. Поэтому я начал гуглить, и хотя мне удалось найти версию rails3, казалось, что гораздо больше людей говорят о скрепке с rails3.

Итак, во-первых, каковы преимущества скрепки?

Есть ли лучшая поддержка rails3 с этим?

4 ответа

Решение

Ни. Используйте несущую.

Для обработки загрузки файлов я переключился с Paperclip на CarrierWave. Хотя Paperclip хорошо (и продолжает) служить мне во многих приложениях, с которыми я работаю, я действительно ценю модульный подход, который использует CarrierWave. Это не зависит от того, какой из популярных клиентов S3 вы используете, поддерживая как aws/s3, так и right_aws. Он также не зависит от ORM и не тесно связан с Active Record. Тесная связь Paperclip принесла нам некоторое горе в работе, и я также запутался в состоянии поддержки Paperclip для aws/s3 и right_aws. Итак, я был рад найти этот новый проект, и сопровождающий Джонас Никлас, кажется, очень отзывчивый и услужливый чувак, что всегда хорошо. Код выглядит великолепно, и мне до сих пор было легко работать с этой библиотекой. (от: http://trevorturk.com/2010/2/8/kzak-an-open-source-web-based-jukebox/)

Больше информации здесь:

Я сделал attachment_fu rails3 совместимым.

Смотрите https://github.com/mihael/attachment_fu

РЕДАКТИРОВАТЬ: но это не работает для некоторых пользователей, и я не буду поддерживать его дальше, поэтому, пожалуйста, посмотрите на другие решения, если вы не хотите взломать его самостоятельно;)

Я протестировал скрепку против carrierwave против attachment_fu с rails3.0.3 для проекта, над которым я работаю.

Пока что attachment_fu работает очень хорошо, как всегда, но код все еще нуждается в некотором рефакторинге с системой обратного вызова. Он имеет backends для облачных файлов, s3.

Скрепка также очень хороша и очень проста в использовании. Базовая настройка не позволяла мне загружать фильмы (пришлось добавить параметр:whiny=>false), и она не очищала имена файлов так, как я ожидал. Вот как я это сделал:

class Asset < ActiveRecord::Base
  has_attached_file :file, :styles => { :small => "300x300>", :thumb => "50x50>" }, :whiny => false
  before_create :sanitize_file_name
  private
  def sanitize_file_name
    self.file.instance_write( :file_name,  file_file_name.gsub(/[^A-Za-z0-9\.\-]/, '_'))
  end  
end

Paperclip имеет s3 backend, но не имеет встроенного backend для облачных файлов. Для этого есть ветвь скрепки (google для paperclip-cloudfiles), созданная для rails2.3.5 (найдите github для paperclip_demo).

Carrierwave выглядит очень хорошо, с отделенной архитектурой, но мне не нравится тот факт, что он не удаляет вещи при обновлениях и уничтожает объекты, оставляя кучу файлов и каталогов на диске. Базовая настройка carrierwave также не позволяла мне загружать фильмы, хотя она хорошо очищает имена файлов. Я не нашел быстрое решение для этого, пока. Если вы используете Mongoid и GridFS, есть встроенная поддержка carrierwave.

Наконец, я взял Paperclip для моего проекта.

Я создал гем для attachment_fu, если вы хотите продолжать использовать его в Rails 3.2 и более поздних версиях.

https://rubygems.org/gems/pothoven-attachment_fu

Стрекоза действительно хороша. Попробуйте, он может обрабатывать файлы и изображения.

Другие вопросы по тегам