Я сделал 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 для своего проекта.