2 votes

Paperclip en production avec Unicorn : constante Paperclip non initialisée (NameError)

J'ai ajouté Paperclip à mon application puis j'ai essayé de la déployer sur mon VPS en utilisant capistrano. Le déploiement se fait avec succès, mais lorsque j'essaie d'accéder à mon application sur le VPS, j'obtiens la page d'erreur Rails. Il n'y a pas d'information dans production.log mais unicorn.log présente l'erreur suivante :

E, [2013-06-25T19:44:07.372060 #21995] ERROR -- : uninitialized constant Paperclip (NameError)
/home/deployer/apps/arcsite/releases/20130625182331/config/initializers/paperclip.rb:1:in `<top (required)>'

Le fichier d'initialisation est paperclip.rb et a le contenu suivant :

Paperclip.interpolates :zone do |attachment, style|
  attachment.instance.zone_id
end

Il s'agit d'un interpolateur qui me permet d'utiliser la structure de dossier que je souhaite.

Si je retire le paperclip.rb j'obtiens l'erreur suivante has_attachment est indéfinie dans ma classe, ce qui donne l'impression que la fonction paperclip n'est pas correctement chargé.

J'ai essayé de désinstaller/réinstaller la gemme, mais lorsque j'ai lancé gem uninstall paperclip Il m'a indiqué que la gemme paperclip n'était pas installée. Lorsque j'ai lancé bundle show paperclip il y avait bien un répertoire (j'utilise RVM), j'ai donc installé manuellement la gemme paperclip avec gem install paperclip . J'obtiens toujours la même erreur.

Cette application fonctionne bien en développement sur le thin serveur.

Ma configuration VPS :

  • nginx
  • licorne
  • rvm
  • capistrano

rails version : 3.2.13 version paperclip : 3.4.2

J'ai suivi Screencast de Ryan pour configurer nginx/unicorn

0voto

Tyler DeWitt Points 3751

Il s'est avéré qu'il s'agissait d'un comportement étrange lors de l'installation. J'ai dû travailler avec les gens de RVM et j'ai mis à jour la documentation de rvm capistrano pour refléter les nouvelles procédures.

0voto

Noah Davis Points 959

Le problème était donc qu'unicorn ne reconnaissait pas mes gemmes nouvellement installées, tout ce que j'avais à faire était d'arrêter manuellement puis de démarrer manuellement unicorn et tout a été pris en charge. J'ai eu exactement le même problème après avoir déployé mon application avec paperclip installé.

Dans le répertoire racine de l'application via SSH--

service unicorn_"app name" stop

suivi de

service unicorn_"app name" start

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X