2010-07-11 5 views
24

J'utilise paperclip pour gérer les téléchargements d'images sur des rails. il a bien fonctionné sur mon ordinateur dev OSX, mais maintenant sur mon serveur web je reçois cette erreur:Paperclip téléversements d'images dans Rails - Paperclip :: CommandNotFoundError

[paperclip] /Users/marky/bin/identify '-format' '%wx%h' '/tmp/stream,16451,2.JPG[0]' 2>/dev/null 
[paperclip] An error was received while processing: #<Paperclip::CommandNotFoundError: Paperclip::CommandNotFoundError> 
[paperclip] /Users/marky/bin/identify '-format' '%wx%h' '/tmp/stream,16451,2.JPG[0]' 2>/dev/null 
[paperclip] An error was received while processing: #<Paperclip::CommandNotFoundError: Paperclip::CommandNotFoundError> 

Maintenant, il est clair pour moi la raison; identifier est en fait dans/usr/bin/not/Users/marky/bin/qui provient de ma machine dev. J'ai:

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

dans mon development.rb, mais je reçois toujours l'erreur. Je ne sais pas comment résoudre ce problème, quelqu'un peut-il m'aider?

+0

Je vais avoir le même problème aussi bien. Il semble que cela a quelque chose à voir avec le passager dans mon cas, car cela a bien fonctionné avec le bâtard. Utilisez-vous un passager? – TenJack

+0

J'avais une erreur similaire, mais quand j'ai mis Paperclip.options [: command_path] = "/ usr/bin" dans development.rb cela fonctionne maintenant. ps, je suis sur Heroku –

Répondre

16

Si vous hébergez votre application avec Passenger, gardez à l'esprit que Passenger n'a pas la même variable $ PATH que votre utilisateur connecté. Une bonne façon de vérifier si passager peut voir les commandes ImageMagick est d'ajouter à l'un de vos modèles de erb:

<%= `which convert` %> 
<%= `echo $PATH` %> 

et de comparer les résultats avec les mêmes commandes en cours d'exécution dans votre terminal. Une autre possibilité est ImageMagick ne peut pas trouver les bibliothèques dont il a besoin. Dans ce cas, vous devrez peut-être exporter une autre variable pour laisser ImageMagick savoir où les libs sont:

# my config/environments/development.rb 
Paperclip.options[:command_path] = "DYLD_LIBRARY_PATH='/Users/jch/Library/ImageMagick-6.6.3/lib' /Users/jch/Library/ImageMagick-6.6.3/bin" 

Hope qui aide -Jerry

+1

par le même jeton, vous pouvez simplement taper shell: console heroku% x {-version conversion} +% x {qui convertit} –

+2

assurez-vous de redémarrer le serveur, après avoir ajouté (ou changer) the Paperclip.options [: chemin_commande] aux environnements/development.rb – gef

5

Vous pouvez installer ImageMagick sur votre ordinateur. Ces problèmes sont générés car ils ne trouveront pas certaines méthodes.

Pour vérifier que ImageMagick est installé sur votre machine, exécutez simplement la commande 'convert' sur le terminal.

+0

Salut, merci pour votre réponse. oui j'ai ImageMagick installé sur ma machine.Quand je lance la commande 'convert' dans le terminal, ça marche bien. d'autres idées? c'est clairement le chemin, mais je ne sais pas comment le changer. – Marky

+0

ah, mais si j'exécute 'identifier' depuis la ligne de commande, tout fonctionne bien quel que soit le dossier dans lequel je le lance, est-ce que cela signifie qu'il y a un autre problème? – Marky

17

paquets suivants pour Installer travailler avec ImageMagick

1) apt-get install imagemagick 
2) apt-get install libmagickwand-dev 
3) gem install rmagick 

Je pense que vous manquez le second.

+0

apt-get install imagemagick Lecture des listes de paquets ... Terminé Construction de l'arborescence des dépendances Lecture des informations d'état ... Terminé imagemagick est déjà la version la plus récente. Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires: apache2-mpm-worker libapr1 libaprutil1-ldap apache2-utils apache2.2-commune libaprutil1-DBD-sqlite3 apache2.2-bin ssl-cert libaprutil1 utiliser « apt -get autoremove 'pour les supprimer. 0 mis à jour, 0 nouvellement installé, 0 à supprimer et 0 non mis à jour. – Marky

+0

apt-get install libmagickwand-dev Lecture des listes de paquets ... Terminé Construction de l'arbre des dépendances Lecture des informations d'état ... Terminé libmagickwand-dev est déjà la version la plus récente. Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires: apache2-mpm-worker libapr1 libaprutil1-ldap apache2-utils apache2.2-commune libaprutil1-DBD-sqlite3 apache2.2-bin ssl-cert libaprutil1 utiliser « apt -get autoremove 'pour les supprimer. 0 mis à jour, 0 nouvellement installé, 0 à supprimer et 0 non mis à jour. – Marky

+0

gem install rmagick Création d'extensions natives. Cela peut prendre un certain temps ... installé avec succès rmagick-2.13.1 1 gem installé Merci! Juste couru tout ce qui précède. Cela signifie-t-il que rmagick n'a pas été installé? – Marky

1

Vérifiez si vous avez ImageMagick installé en exécutant

which convert 

dans votre console. Dans mon cas, le résultat est le suivant:

$ which convert 
/usr/bin/convert 

Puis-je ajouter la ligne suivante config/environnements/development.rb qui indique Paperclip où trouver Imagemagick

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

Si la conversion affiche/usr/bin/convert, dans paperclip.options [: chemin_commande] = "/ usr/local/bin /" ou aperclip. options [: chemin_commande] = "/ usr/bin/convert /" – Sam

2

Dans mon cas , la définition des options du chemin de commande Paperclip sous le fichier d'environnement du serveur de production (NGINX + Passenger) ne fonctionnait pas.

Je l'ai établi dans le fichier initialiseur paperclip.rb à la place:

Paperclip.options[:command_path] = "/usr/bin/" if Rails.env.production? 
+0

J'ai rencontré ce problème après la mise à jour de nginx. Merci pour la solution! – penner