ATTACTMENT_FU или скрепка для Rails3
-
10-10-2019 - |
Вопрос
Я только что обновился до 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 и выше.
Стрекоза действительно хорошо. Попробуйте, он может обрабатывать файлы и изображения.