Вопрос

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

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

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

Это было полезно?

Решение

Ни один. Использовать Carrierwave .

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

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

Другие советы

Я сделал Attachment_fu Rails3 совместимым.

Видеть https://github.com/mihael/attachment_fu

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

Я протестировал Pacerclip против CarrierWave против Attachment_fu с Rails3.0.3 для проекта, над которым я работаю.

Уже ATTACTMENT_FU Работает очень хорошо, как всегда, но код все еще нуждается в рефакторинге с помощью системы обратного вызова. У него есть бэкэнды для Cloudfiles, 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 имеет Backend S3, но у него нет бэкэнда для встроенных CloudFiles. Для этого есть вилка скрепки (Google for Paperclip-Cloudfiles), которая построена для Rails2.3.5 (поиск GitHub для pacerclip_demo).

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

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

Я создал драгоценный камень для Attachment_fu, если вы хотите продолжать использовать его в Rails 3.2 и выше.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top