Rails 3 скрепка против несущей волны против стрекозы против прикрепления_фу

Я работаю над обновлением приложения Rails 2.3.11, Ruby 1.9.2 до Rails 3.0.10, и attachment_fu больше не работает.

Я рассматриваю возможность перехода на скрепку, несущую волну или стрекозу для загрузки файлов или, может быть, поддерживаемую версию attachment_fu, совместимую с Rails 3.

Какой из этих вариантов лучше всего использовать с точки зрения производительности, насколько хорошо он поддерживается, насколько легко обновить его с attachment_fu и, возможно, он будет совместим с Rails 3.1? Каковы основные преимущества и недостатки каждого из них?

Любое понимание будет оценено.


person keithepley    schedule 14.09.2011    source источник
comment
ruby-toolbox.com/categories/rails_file_uploads   -  person Chloe    schedule 24.03.2014


Ответы (3)


Я использовал и Paperclip, и Carrierwave, и на вашем месте я бы выбрал Carrierwave. Это намного более гибко. Мне также нравится тот факт, что он не загромождает ваши модели конфигурацией. Вместо этого вы можете определить классы загрузчика. Это позволяет вам легко повторно использовать, расширять и т. д. вашу конфигурацию загрузки.

Вы смотрели рельсовую трансляцию Carrierwave? http://railscasts.com/episodes/253-carrierwave-file-uploads

Хотя Paperclip — неплохой выбор, это был «лучший» выбор в течение долгого времени. Но Carrierwave определенно выглядит как новое поколение ;)

person Robin    schedule 14.09.2011
comment
Спасибо! Я только что смотрел рельсовую трансляцию, а также скрепку. Думаю, я выберу Carrierwave; похоже, это то, что большинство людей говорят использовать. Теперь самое интересное, обновление с attachment_fu... - person keithepley; 15.09.2011
comment
Есть способ легко перейти с скрепки на несущую, но, к сожалению, это не относится к attachment_fu. Со страницы github несущей волны: К сожалению, attachment_fu слишком сильно отличается по философии, чтобы иметь разумный режим совместимости. Патчи для перехода с других решений будут приняты с радостью. :( - person Robin; 15.09.2011
comment
Если вы пытаетесь работать с Rails 2.3.x и сначала мигрируете с attachment_fu на CarrierWave, я бы предложил Paperclip вместо CarrierWave. Когда вы используете ветку 0.4.x CW с Rails 2.3.x, вы не можете установить content_type файла при загрузке, что для меня было нарушителем условий сделки. Если вы мигрируете с attachment_fu и переходите на rails 3, то все будет в порядке, и CarrierWave — отличный вариант. - person wchrisjohnson; 19.02.2012

Я использовал CarrierWave и после нескольких часов разочарования перешел на Paperclip.

Вот проблемы, которые я видел с CarrierWave:

  • Вы не можете проверить размер файла. В вики есть статья, в которой объясняется, как это сделать, но она не работает.
  • Проверка целостности не работает при использовании MiniMagick (очень удобно, если вас беспокоит использование оперативной памяти). Вы можете загрузить поврежденный файл изображения, и CarrierWave сначала выдаст ошибку, но в следующий раз проглотит ее.
  • Вы не можете удалить исходный файл. Вместо этого вы можете изменить его размер, сжать и т. д. В вики-статье объясняется, как это сделать, но опять же это не работает.
  • Это зависит от внешних библиотек, таких как RMagick или MiniMagick. Paperclip работает напрямую с командной строкой convert (ImageMagick). Итак, если у вас есть проблемы с Minimagick (у меня были), вы потеряете часы на поиски в Google. И RMagick, и Minimagick заброшены на момент написания этой статьи (я связался с автором Minimagic, ответа нет).
  • Ему нужны некоторые файлы конфигурации. Это рассматривается как преимущество, но мне не нравится иметь одиночные файлы конфигурации вокруг моего проекта только для одного драгоценного камня. Конфигурация в модели кажется мне более естественной. В любом случае это дело личного вкуса.
  • Если вы найдете какую-то ошибку и сообщите о ней, команда разработчиков действительно отсутствует и занята. Они скажут вам исправить ошибки самостоятельно. Похоже на личный проект, который улучшают в свободное время. Для меня это неприемлемо для профессионального проекта со сроками.
person David Morales    schedule 27.02.2012
comment
да, скрепка возвращается, и тот факт, что она работает напрямую с ImageMagick, является большим плюсом - person stephenmurdoch; 07.04.2012
comment
скрепка также имеет свои недостатки, поэтому попробуйте ее, и если она вам поможет, оставайтесь с ней. У меня это тоже не сработало, поэтому я реализовал свою собственную библиотеку для загрузки изображений. Но если бы мне пришлось выбирать один, я бы выбрал скрепку по (серьезным) причинам, описанным выше. - person David Morales; 30.05.2012
comment
эти недостатки все еще актуальны? - person Nick Ginanto; 25.11.2012
comment
Первая минимагия была восстановлена. Во-вторых, несмотря на то, что Paperclip работает напрямую с imageMagick, это также затрудняет прямое взаимодействие с ним. Я только что перешел от использования Paperclip к CarrierWave, потому что Paperclip многое делает для вас и затрудняет настройку вещей, когда вам это нужно. Не говоря уже о том, что кодовая база Paperclip, как они говорят, «раздута», в то время как несущая меньше, что, скорее всего, является прямым результатом того, что несущая оставляет больше вещей на ваше усмотрение, в то время как paperclip пытается сделать больше для вас. - person rovermicrover; 13.05.2013
comment
Предыдущий разработчик нашего приложения использовал CarrierWave для загрузки изображений. Недавно мы приняли решение изменить нашу схему, чтобы включить несколько изображений одновременно, и поэтому мы использовали встроенные документы в нашей схеме Mongoid. К сожалению, в CarrierWave есть ошибка трехлетней давности, из-за которой загружает во встроенные документы. Скрепка для Mongoid, с другой стороны, работала блестяще. - person sffc; 30.09.2013
comment
вот как удалить изображения в CarrierWave: profile.remove_logo! профиль.сохранить! - person kimerseen; 27.06.2014

Я бы спросил себя:

  • Буду ли я часто менять размер изображения? Пример: если вы хотите, чтобы ваши пользователи могли изменять размер своих изображений (или вам нужна гибкость в размере по какой-то другой причине), или действительно быстрая разработка.

Да: Стрекоза

Нет: либо Carrierwave, либо Paperclip

person montrealmike    schedule 04.04.2013