web-dev-qa-db-fra.com

Rails 3 Paperclip vs carrierwave vs dragonfly vs attachment_fu

Je travaille à la mise à niveau d'une application Rails 2.3.11, Ruby 1.9.2 vers Rails 3.0.10, et attachment_fu ne fonctionne plus.

J'envisage de changer pour Paperclip, carrierwave ou dragonfly pour les téléchargements de fichiers, ou peut-être une Rails 3 version compatible et maintenue de attachment_fu.

Laquelle de ces options serait la meilleure à utiliser en termes de performances, à quel point elle est bien entretenue, à quel point il est facile de mettre à niveau à partir de attachment_fu, et peut-être qu'elle sera Rails 3.1 compatible? Quels sont les principaux points forts et inconvénients de chacun?

Toute perspicacité serait appréciée.

52
keithepley

J'ai utilisé Paperclip et Carrierwave, et si j'étais vous, j'irais pour Carrierwave. C'est beaucoup plus flexible. J'aime aussi le fait que cela n'encombre pas vos modèles avec la configuration. Vous pouvez définir des classes de téléverseur à la place. Il vous permet de réutiliser facilement, d'étendre, etc. votre configuration de téléchargement.

Avez-vous regardé la diffusion sur rail Carrierwave? http://railscasts.com/episodes/253-carrierwave-file-uploads

Un trombone n'est pas un mauvais choix cependant, c'est le "meilleur" choix depuis longtemps. Mais Carrierwave ressemble définitivement à la nouvelle génération;)

42
Robin

J'ai utilisé CarrierWave et après quelques heures de frustration, je passe à Paperclip.

Voici les problèmes que j'ai vus avec CarrierWave:

  • Vous ne pouvez pas valider la taille du fichier. Il y a un article wiki qui explique comment le faire, mais cela ne fonctionne pas.
  • Les validations d'intégrité ne fonctionnent pas lorsque vous utilisez MiniMagick (très pratique si vous êtes préoccupé par RAM utilisation). Vous pouvez télécharger un fichier image corrompu et CarrierWave lancera une erreur au début, mais la prochaine fois avale le.
  • Vous ne pouvez pas supprimer le fichier d'origine. Vous pouvez à la place le redimensionner, compresser, etc. Il y a un article wiki expliquant comment le faire, mais encore une fois cela ne fonctionne pas.
  • Cela dépend des bibliothèques externes telles que RMagick ou MiniMagick. Paperclip fonctionne directement avec la ligne de commande convert (ImageMagick). Donc, si vous avez des problèmes avec Minimagick (j'ai eu), vous perdrez des heures à plonger dans les recherches Google. RMagick et Minimagick sont tous deux abandonnés au moment d'écrire ces lignes (j'ai contacté l'auteur de Minimagic, aucune réponse).
  • Il a besoin de quelques fichiers de configuration. Ceci est considéré comme un avantage, mais je n'aime pas avoir des fichiers de configuration uniques autour de mon projet pour un seul bijou. La configuration dans le modèle me semble plus naturelle. C'est une question de goût personnel de toute façon.
  • Si vous trouvez un bug et le signalez, l'équipe de développement est vraiment absente et occupée. Ils vous diront de corriger vous-même les bugs. Cela ressemble à un projet personnel qui s'améliore dans les temps libres. Pour moi ce n'est pas valable pour un projet professionnel avec des délais.
40
David Morales

Je me demande:

  • Vais-je changer la taille de l'image souvent? Exemple: si vous souhaitez permettre à vos utilisateurs de modifier la taille de leurs images (ou si vous avez besoin de flexibilité dans la taille pour une autre raison), ou un développement très rapide.

Oui: Dragonfly

Non: Carrierwave ou Paperclip

3
montrealmike