Aujourd'hui on dit bonjour Paperclip, pour vos uploads de fichiers !

Si vous avez une gem que vous souhaiteriez voir dans Bonjourgem n'hésitez pas à me le dire sur twitter ou directement dans les commentaires :)

Commentaires

Quelques idées en vrac pour les prochains bonjourgem :
• carrierwave
• meta-tags
• settingslogic
• find_by_param
• activevalidators
• html5-boilerplate
• rails_autolink
• jbuilder

J'espère que ça pourra t'aider :)

Il y a presque 5 ans

Certaines ne sont pas dans ma liste actuel donc oui ça m'aide :p

Il y a presque 5 ans

Un tour sur https://www.ruby-toolbox.com/ devrait de donner un max d'idées aussi :)

Il y a presque 5 ans

Bah ça et les twitters de certains grand monsieur me servent de ressources déjà !

Il y a presque 5 ans

La philosophie de paperclip semble tellement dépassée après qu'on ait utilisé carrierwave ou dragonfly.

Il y a presque 5 ans

Jamais utilisé ces gems, en regardant les docs sa ressemble pas mal à paperclip après faut voir à l'usage :)

Il y a presque 5 ans

David, non. Les philosophies de Carrierwave et Dragonfly sont différentes de Paperclip.

J'ai pas envie d'écrire un roman maintenant pour expliquer les pros-cons.

Disons qu'après usage je préfère utiliser Carrierwave si mes fichiers sont hébergés sur Amazon S3 et si c'est du dédié j'utilise Dragonfly.

Il y a presque 5 ans

Faudra que j'essaye Carrierwave et Dragonfly alors :)

Il y a presque 5 ans

À la louche, celles que j'utilise le plus :
* zurb-foundation
* kaminari
* resque (et resque-mailer & resque-scheduler)
* mongoid
* exception_notification

Il y a presque 5 ans

@Nicolas Blanco : le roman m'intéresse entre Paperclip/Carrierwave !
Si tu as 2/3 points à partager, je suis tout ouï.

Il y a presque 5 ans

@Nicolas Blanco : Le roman m'intéresse aussi, surtout que je ne connais pas dragonfly et que je pensais qu'il n'y avait que paperClip et Carrierwave dans la compétition.

Il y a presque 5 ans

RedCloth me semble intéressant !
coderay aussi pourquoi pas

Il y a presque 5 ans

@Nicolas Blanco : Ouais une petite comparaison des trois !
Généralement pour choisir une gem je me base sur son classement dans https://www.ruby-toolbox.com/categories/rails_file_uploads mais je suis ouvert hein :D

Il y a presque 5 ans

Dans Paperclip et ses prédécesseurs (attachment_fu et file_column) on insère toute la logique d'upload dans le modèle sous la forme d'un hash d'options.

On insère aussi des éléments de vue (taille des thumbs) directement dans le modèle.

Dans Carrierwave, on externalise la logique d'upload dans des classes à part. C'est déjà beaucoup plus flexible et DRY. Si plusieurs modèles ont la même logique de traitement des uploads, on réutilise la même classe. Pas besoin de bidouiller, créer des contantes ou des modules... On peut facilement étendre les classes Uploader avec des méthodes de processing custom, c'est donc beaucoup plus flexible qu'un simple hash d'options.

Dragonfly est totalement différent et est composé en partie d'une application Rack. La logique est que le traitement des uploads est effectué directement au moment où la vue est appelée puis mis en cache. L'information sur la taille de la miniature se trouve directement dans la vue. Plus besoin de reprocesser les miniatures, plus besoin de modifier du code Ruby si dans une vue on a besoin d'une taille de miniature différente ou d'un autre processing.

Cette solution semble a première vue parfaite, malheureusement elle oblige forcément à générer des URLs qui vont taper sur l'appli Rack de Dragonfly, qui va se charger soit de processer, servir puis cacher, soit directement servir/rediriger.

Donc cette philosophie n'est pas parfaite si on compte envoyer les fichiers sur Amazon S3 ou un hébergeur de fichiers cloud où l'avantage est de pouvoir les lier directement et éviter des appels sur sa propre architecture.

Il y a presque 5 ans

merci beaucoup pour cette explication

Il y a presque 5 ans

Je remets le badge du plus long commentaire de RubyLive à Nicolas :)

Il y a presque 5 ans
Vous devez vous inscrire ou vous connecter pour poster un commentaire