Question

J'utilise le plug-in PaperClip dans mon application Rails comme suit:

  has_attached_file :photo, :styles => {:small => '64X64>', :medium => '250X250>'},
                                      :url  => "/assets/user_photos/:id/:style/:basename.:extension",
                                      :path => ":rails_root/public/assets/user_photos/:id/:style/:basename.:extension"
#  validates_attachment_presence :photo
  validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png','image/gif']
  validates_attachment_size :photo, :less_than => 1.megabytes

Cela fonctionne très bien sur le développement (Mac OSX + Mongrel). Mais quand je le mets en production (Linux Debian + Apache / Passenger), il n’accepte que le .gif et j’obtiens l’erreur suivante pour le .png et le .jpg:

 Photo /tmp/stream20091028-20066-1t1a0oz-0 is not recognized by the 'identify' command.
 Photo /tmp/stream20091028-20066-1t1a0oz-0 is not recognized by the 'identify' command.

J'ai essayé d'ajouter la ligne suivante, comme le suggèrent certains tutoriels, mais cela n'a pas aidé!

Paperclip.options[:command_path] = "/usr/local/bin"
Était-ce utile?

La solution

Sur votre serveur de production, essayez de lancer:

which identify

Cela devrait vous donner le chemin d'accès au binaire d'identification d'ImageMagick. Si ce n'est pas le cas, ImageMagick n'est pas installé ou il ne se trouve pas dans votre chemin.

S'il renvoie quelque chose du type "/ usr / bin / identifier", vous souhaiterez définir les options Paperclip de votre fichier d'environnement production.rb sur:

Paperclip.options[:command_path] = "/usr/bin"

Autres conseils

Au cas où quelqu'un rencontrerait ce problème, la même erreur se produirait sur mon Mac OSX Snow Leopard lors du traitement de fichiers JPG (les fichiers GIF fonctionnaient toutefois très bien). J'utilise Rails 3.0.5 et Paperclip 2.3.11.

[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: /var/folders/9D/9DvX1hqSFr04U3drvD9o0U+++TI/-Tmp-/stream20110420-50661-l9je0z.jpg is not recognized by the 'identify' command.

J'ai résolu le problème en installant à partir de la source la bibliothèque d'encodage JPEG disponible à l'adresse http: //www.ijg.org/files/jpegsrc.v8c.tar.gz .

cd /usr/local/src
tar xvfz jpeg-8c.tar.gz
cd jpeg-8c
export MACOSX_DEPLOYMENT_TARGET=10.6
./configure --enable-shared --prefix=$CONFIGURE_PREFIX
make
sudo make install

Ensuite, j'ai réinstallé ImageMagick à partir du code source:

cd /usr/local/src
tar xvfz ImageMagick-6.6.9-5.tar.gz
cd ImageMagick-6.6.9-5
export CPPFLAGS=-I/usr/local/include
export LDFLAGS=-L/usr/local/lib
./configure --prefix=/usr/local --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --disable-openmp
make
sudo make install

Après cela, j'ai pu télécharger des fichiers JPG avec Paperclip.

[paperclip] convert '/var/folders/9D/9DvX1hqSFr04U3drvD9o0U+++TI/-Tmp-/stream20110420-86578-3ntsgn.jpg[0]' -resize "100x100>" '/var/folders/9D/9DvX1hqSFr04U3drvD9o0U+++TI/-Tmp-/stream20110420-86578-3ntsgn20110420-86578-iiszw5' 2>/dev/null
...
[paperclip] saving /Users/xxx/myrailsapp/public/system/images/5/original/IMG_0001.jpg

J'ai eu le même problème après la mise à niveau vers Lion. L'exécution de 'identifier image.jpg' a renvoyé l'erreur dyld: la bibliothèque non chargée .

Ce message a aidé à résoudre le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top