cplusn.com

collaboration : patrimoine : mobilité

Rails 3 + Paperclip sous Windows

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 :

  1. 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...
  2. 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)....
  3. 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...
Catégories : A l'affiche, Développement


2 commentaires

  1. Emmanuel dit :

    ce qui importe surtout dans le cas qui nous intéresse, c’est la version de Paperclip… Quelle est la votre ?

  2. Mostafa Bardach dit :

    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



rvm

Installer RVM et Rai

RVM permet d'installer facilement plusieurs environnement Ruby sur une même ...

mainscreen

Démarrer avec iOS :

M'étant récemment lancé dans le développement d'applications pour les plateformes ...

Vue en liste

jQuery Mobile 2e par

Le précédent article de notre série sur jQuery Mobile annonçait ...

20111014-192127.jpg

Premières impression

J'ai pu sans trop de soucis mettre à jour mon ...

Steve Jobs

Ma première rencontr

La nouvelle nous a tous pris de court ce matin, ...