rails trombone et passager `n’est pas reconnu par la commande ‘identifier’

Lorsque je télécharge une photo, mon modèle échoue à la validation, et me trompe même sans aucune validation. Je suis retourné cette erreur:

/tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command. and /tmp/stream20100103-13830-ywmerx-0 is not recognized by the 'identify' command. 

Je suis convaincu que ce n’est pas lié à ImageMagick, car j’ai supprimé tout traitement d’image du téléchargement, et j’ai également essayé de télécharger différents types de mime, tels que les fichiers .txt et autres.

De plus, j’ai trouvé quelque chose qui pourrait fonctionner. Un article de blog affirme que mettre ce qui suit dans mon environnement (dans ce cas, development.rb)

 Paperclip.options[:command_path] = "/opt/local/bin" 

Ceci est lié à ImageMagick. L’option command_path doit indiquer l’emplacement où identify est installé. A partir de la ligne de commande, vous pouvez déterminer avec which identify .

 $ which identify /some/path/to/identify 

Ensuite, définissez command_path sur ce chemin (dans config/environments/development.rb ):

 Paperclip.options[:command_path] = "/some/path/to" 

Cela peut également être dû à l’utilisation d’anciennes versions de Paperclip (par exemple, la version 2.4.x) avec des versions plus récentes et incompatibles du joyau Cocaine .

J’ai pu résoudre ce problème en procédant comme suit:

 brew uninstall imagemagick brew install imagemagick 

Cela m’est arrivé lorsque j’ai mis à niveau OS X vers Lion.

Résolu par …

  • faire une brew list pour voir tous les paquets que vous avez et l’enregistrer quelque part

  • désinstaller homebrew (voir ‘Désinstallation’ sur cette page https://github.com/mxcl/homebrew/wiki/Installation )

  • réinstaller homebrew avec les habituels

    ruby -e “$ (curl -fsSL https://raw.github.com/gist/323731 )”

  • réinstaller tous les paquets brew install ghostscript brew install imagemagick etc pour tous les autres que vous avez

Remarque, avant que Ghostscript ne réinstallerait, je devais appliquer la suggestion trouvée ici: https://github.com/mxcl/homebrew/issues/6381

 brew edit ghostscript 

Ajoutez ensuite le bloc de def patches au bas de la classe Ghostscript:

 class Ghostscript < Formula .... existing code here .... def patches { :p0 => 'http://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/print/ghostscript/patches/patch-ak' } end end 

Le patch ci-dessus peut être fusionné au moment où vous lisez ceci.

Après cela, imagemagick a détecté correctement les jpegs.

TL; DR désinstaller complètement et réinstaller homebrew, ghostscript (avec patch pour Lion) et imagemagick

Je l’ai fait fonctionner en installant le armsin, http://mxcl.github.com/homebrew/

Et puis j’ai tapé:

 brew install imagemagick 

et après ça

 gem install rmagick 

Ensuite, je viens de supprimer les chemins d’option (Paperclip.options [: command_path] = “…”) que je saisis manuellement dans environment / development.rb et initialize / paperclip.rb

Ajout de rmagick au fichier gem. Redémarré le serveur et cela a fonctionné comme un charme!

Cela a fonctionné de http://arglebargle.posterous.com/path-environment-variable-for-rails-using-pas

Mettez quelque chose comme ça dans VirtualHost (ou partout où le passager est installé):

 SetEnv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/mysql/bin 

Pour append une autre solution potentielle que je n’ai pas vue beaucoup discutée: ldconfig .

J’ai eu le même problème que je viens de passer une journée et demie à retrouver. J’ai correctement réinstallé ImageMagick depuis la source avec le support png et jpeg supplémentaire, j’ai ajouté LD_LIBRARY_PATH et DYLD_LIBRARY_PATH aux variables d’environnement, j’ai défini l’option :command_path pour Paperclip dans la configuration de mon environnement de production. Bien que les commandes ImageMagick aient fonctionné à partir de la ligne de commande, rien n’a résolu mon problème de trombone.

Finalement, après avoir vu ldconfig mentionné en passant, j’ai essayé ça sur un coup de tête et ça a fonctionné.

 sudo ldconfig 

J’ai peut-être été capable d’accomplir la même chose en redémarrant Apache ou le matériel, mais je n’étais pas en mesure de le faire moi-même.

Vous obtiendrez également ce message d’erreur si vous essayez de télécharger un fichier qui contient des deux points dans son nom à partir de la dernière version.

Habituellement, il est utile de spécifier le chemin d’access à la commande d’identification avec ..

 Paperclip.options[:command_path] = "/your/path/to/identify" 

..as les autres mentionnés. Mais le problème peut également survenir en cas de non-concordance de version, j’ai récemment mis à jour la version Ruby-on-Rails d’une application (sur Rails 3.1.10), mais j’ai oublié de mettre à jour le joyau du trombone. Après avoir mis à jour la version trombone 2.8.0, cela a fonctionné à nouveau.

Si vous essayez de télécharger une vidéo, alors “identifier” essaie probablement de déléguer le travail à ffmpeg. Exemple

  identify Desktop/00-ScalingRails-Introduction.mp4 [alaa@Zero>/home/alaa] identify: delegate failed `"ffmpeg" -v -1 -vframes %S -i "%i" -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z"' @ error/delegate.c/InvokeDelegate/1061. identify: unable to open image `/tmp/magick-XXHF4ImT.pam': @ error/blob.c/OpenBlob/2498 

Dans cet exemple, l’installation de ffmpeg a supprimé le message d’erreur de la liste des erreurs de validation.

Juste pour dire, vous pouvez également avoir ce message d’erreur pour ce que cela signifie.

Dans mon cas, la taille du fichier était de 0 octet parce que j’avais oublié de la vider après l’avoir écrite à partir d’un zip et de la transmettre à Paperclip.

Il peut être intéressant de vérifier que vous pouvez réellement ouvrir le fichier avec votre visualiseur préféré avant de lire l’autre réponse de ce sujet 🙂

Si vous êtes un utilisateur Mac et que cela n’a été un problème que depuis la mise à jour de votre système d’exploitation vers la version 10.8, cela pourrait être un problème lié à X11, comme décrit ici http://support.apple.com/kb/HT5293

identifier ~ / chemin / vers / image

Ne fonctionnait pas pour moi même après avoir essayé toutes les corrections ci-dessus. J’ai installé XQuartz à partir de http://xquartz.macosforge.org/landing/ et maintenant cela fonctionne à nouveau.

Peut aider les autres aussi

ça m’est aussi arrivé, j’ai essayé toutes les méthodes mentionnées ci-dessus. Je change juste la version trombone, alors tout fonctionne bien.

J’avais ce problème en utilisant OSX + MAMP + Passenger + Paperclip et après avoir configuré command_path et m’être assuré que imagemagick était correctement installé via brew, définissant correctement les répertoires temp et upload pour passager sur quelque chose inscriptible, cela ne fonctionnerait toujours pas!

La solution consistait à éditer le fichier envvars pour MAMP dans / Applications / MAMP / Library / bin / envvars et à commenter la ligne DYLD_LIBRARY_PATH d’exportation.

C’est-à-dire changer la ligne qui dit

 export DYLD_LIBRARY_PATH 

à

 # export DYLD_LIBRARY_PATH 

Relancez ensuite MAMP et ressentez l’exaltation lorsque vos images sont correctement téléchargées / redimensionnées.