Pour insérer et manipuler des images dans Rails, il existe de nombreux gems permettant de s’affranchir d’une bonne partie de la complexité des transferts de fichiers. Parmi ceux-ci, j’ai retenu Paperclip.
Autant la gestion des transferts de fichiers s’est faite sans problème, autant le redimensionnement de ceux-ci m’a amené à m’arracher quelques cheveux ; je tombais systématiquement sur l’erreur suivante :
Photo C:/xxx/xxx/xxx/Temp/stream,2568,0.jpg is not recognized by the 'identify' command
Pour régler ce problème, trois étapes importantes :
1. Installer ImageMagick
Eh oui, Paperclip repose sur ImageMagick pour le redimensionnement des images ! Il faut donc télécharger cet outil pour Windows à l’adresse suivante :
http://www.imagemagick.org/download/binaries/ImageMagick-6.6.4-9-Q16-windows-dll.exe
Installez le programme à l’adresse par défaut, puis vérifiez que tout fonctionne bien en ouvrant un terminal (invite de commande) et en tapant : identify chemin/vers/une/image.jpg. Si tout est OK, ImageMagick vous répondra en affichant le format du fichier que vous lui avez fourni.
2. Ajouter un initialiseur à Rails
Ajoutez dans le répertoire config/initializers de votre application un fichier paperclip.rb dans lequel vous collerez le code suivant :
require "paperclip" Paperclip.options[:command_path] = 'C:\PROGRA~1\ImageMagick-6.6.4-Q16' Paperclip.options[:swallow_stderr] = false
Bien sûr, la première ligne d’option est à modifier en fonction de la localisation et de la version de ImageMagick installée à l’étape précédente. Il est très important de mettre le chemin Windows au format DOS 8.3 (PROGRA~1 en lieu et place de Program Files, dont l’espace cause problème à Paperclip).
3. Modifier les sources de Paperclip
Il faut également aller modifier la ligne de commande d’ImageMagick dans Paperclip, en éditant le fichier suivant paperclib.rb qui se trouve dans le répertoire lib du gem Paperclip. Sur mon poste, le fichier se trouve ici :
C:\Ruby\lib\ruby\gems\1.9.1\gems\paperclip-2.3.3\lib
Dans la fonction run, qui se trouve vers la ligne 100, trouvez la ligne suivante :
command = %Q[#{path_for_command(cmd)} #{params}]
et remplacez-la par la ligne ci-dessous :
command = %Q[#{path_for_command(cmd)} #{params.gsub("'",'"')}]
Cela remplacera les quotes simples par des quotes doubles.
Voilà, normalement, vous devriez accéder aux joies de Paperclip sous Windows !
Sources : Un commentaire du Railscast dédié à Paperpclip
Autres articles similaires :
- Migration Windows XP vers Windows 7
Je viens de migrer l’ordinateur familial de Windows XP vers Windows 7, et bien qu’étant fan des OS libres comme Ubuntu, je dois avouer que... - Un aide mémoire pour utiliser REST sous Rails
La société allemande b-simple a produit un aide-mémoire très bien fait, expliquant dans le détail le développement d’applications Rails utilisant l’architecture REST (Representational State Transfer).... - Installer Passenger Phusion et Rails 2.2.2 sur Ubuntu 8.04
Ca fait déjà un moment que la promesse des développeurs de Phusion, à savoir un déploiement d’une application Rails en quelques lignes dans apache.conf me...

ce qui importe surtout dans le cas qui nous intéresse, c’est la version de Paperclip… Quelle est la votre ?
Bonjour,
J’ai suivi votre démarche. Mais dans le fichier paperclip.rb, je n’ai pas les lignes mentionnées dans votre post. J’ai les lignes suivantes:
CommandLine.path = options[:command_path] || options[:image_magick_path]
CommandLine.new(cmd, *params).run
NB: j’ai la vesion ImageMagick-6.6.5-Q8
Merci pour toute aide
Bardach