Attachment_fu или Скрепка для Rails3 - PullRequest
12 голосов
/ 15 декабря 2010

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

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

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

Ответы [ 4 ]

12 голосов
/ 15 декабря 2010

Ни.Используйте carrierwave .

Для обработки загрузки файлов я переключился с 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/)

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

7 голосов
/ 20 декабря 2010

Я сделал 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

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

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

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

2 голосов
/ 13 марта 2013

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

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

0 голосов
/ 22 июня 2011

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

...