ruby on rails 3 - remove - Rails 3 paperclip vs carrierwave vs libélula vs attachment_fu
rails gem upload file (3)
Estoy trabajando en la actualización de una aplicación Rails 2.3.11, Ruby 1.9.2 a Rails 3.0.10, y attachment_fu ya no funciona.
Estoy buscando cambiar a paperclip, carrierwave, o libélula para subir archivos, o tal vez una versión mantenida compatible de Rails 3 de attachment_fu.
¿Cuál de estas opciones sería la mejor para usar en términos de rendimiento, qué tan bien conservada es, qué tan fácil es actualizar de attachment_fu y quizás sea Rails 3.1 compatible? ¿Cuáles son las principales fortalezas y desventajas de cada uno?
Cualquier idea sería apreciada.
He usado CarrierWave y después de algunas horas de frustración voy a cambiar a Paperclip.
Estos son los problemas que he visto con CarrierWave:
- No puedes validar el tamaño del archivo. Hay un artículo de wiki que explica cómo hacerlo, pero no funciona.
- Las validaciones de integridad no funcionan cuando se utiliza MiniMagick (muy conveniente si le preocupa el uso de RAM). Puede cargar un archivo de imagen dañado y CarrierWave arrojará un error al principio, pero la próxima vez se lo tragará.
- No puedes borrar el archivo original. En cambio, puedes redimensionarlo, comprimirlo, etc. Hay un artículo wiki que explica cómo hacerlo, pero nuevamente no funciona.
- Depende de bibliotecas externas como RMagick o MiniMagick. Paperclip trabaja directamente con la línea de comandos de
convert
(ImageMagick). Entonces, si tiene problemas con Minimagick (tuve), perderá horas buceando en las búsquedas de Google. Tanto RMagick como Minimagick están abandonados en el momento de escribir esto (me puse en contacto con el autor de Minimagic, sin respuesta). - Necesita algunos archivos de configuración. Esto se ve como una ventaja, pero no me gusta tener archivos de configuración únicos alrededor de mi proyecto solo para una joya. La configuración en el modelo me parece más natural. Esto es una cuestión de gusto personal de todos modos.
- Si encuentra algún error y lo informa, el equipo de desarrollo está realmente ausente y ocupado. Te dirán que arregles los errores tú mismo. Parece un proyecto personal que se mejora en el tiempo libre. Para mí no es válido para un proyecto profesional con fechas límite.
He usado Paperclip y Carrierwave, y si fuera tú, iría por Carrierwave. Es mucho más flexible. También me encanta el hecho de que no confunde a tus modelos con la configuración. Puede definir clases de cargador en su lugar. Le permite reutilizar fácilmente, extender, etc. su configuración de carga.
¿Viste el Carrierwave railscast? http://railscasts.com/episodes/253-carrierwave-file-uploads
Sin embargo, Paperclip no es una mala elección, ha sido la "mejor" opción durante mucho tiempo. Pero Carrierwave definitivamente parece ser la nueva generación;)
Me preguntaría a mí mismo:
- ¿Cambiaré el tamaño de la imagen a menudo? Ejemplo: si desea permitir que sus usuarios cambien el tamaño de sus imágenes (o su necesidad de flexibilidad de tamaño por alguna otra razón), o un desarrollo realmente rápido.
Sí: Libélula
No: ya sea Carrierwave o Paperclip