Attachment_fu или скрепка для Rails3 - программирование

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

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

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

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

4b9b3361

Ответ 1

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

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

Подробнее здесь:

Ответ 2

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

См. https://github.com/mihael/attachment_fu

EDIT: но для некоторых пользователей это нарушено, и я не поддерживаю его дальше, поэтому ознакомьтесь с другими решениями, если вы не хотите его взломать сами;)

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

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

Paperclip также очень хорош и очень прост в использовании. Базовая установка не позволяла мне загружать фильмы (нужно было добавить опцию: 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, но он не имеет бэкэнд для встроенных cloudfiles. Для этого есть вилка скрепки (google для paperclip-cloudfiles), которая построена для rails2.3.5 (поиск github для paperclip_demo).

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

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

Ответ 3

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

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

Ответ 4

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