2010-09-18 10 views
0

C'est donc mon problème. J'ai utilisé Capistrano pour déployer mon application Rails 3 sur un serveur Ubuntu, sur lequel est installé Phusion Passenger 3. Tout aurait dû fonctionner normalement, mais j'ai continué à recevoir ce message d'erreur.Lorsqu'il est exécuté sur un passager Phusion, Bundler ne peut pas trouver le répertoire Rails

Impossible de trouver Gemfile dans/var/www/rails/releases/20100916074325. (Bundler :: GemfileNotFound)

Le répertoire dans le message d'erreur (que j'ai ajouté pour plus de clarté) existe sur le système, tout comme le fichier Gemfile. Sous le message d'erreur, la trace de la pile a montré l'erreur est renvoyée à l'intérieur

/usr/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/shared_helpers.rb

Je suis donc allé là-bas et j'ai ajouté des sorties pour vérifier l'existence des répertoires sur ce chemin, et chacun d'entre eux retournait faux jusqu'à 'www'. Je suis incrédule.

Pourquoi Bundler, fonctionnant sous Passenger, ne peut-il pas trouver ces chemins? Que puis-je faire pour le résoudre? (Je suis sur le point d'abandonner sur Passenger à ce stade.)

+0

Le passager 3 est en version bêta 2 donc il est possible qu'il y ait des problèmes. Y a-t-il une chance que ce soit un problème de chemin ou d'autorisations? – Brian

+0

J'ai eu la même erreur avec la version précédente, et en fait seulement mis à jour à 3 parce que je pensais qu'il pourrait être corrigé dans la nouvelle version. Je pense que ce n'est probablement pas un problème de chemin ou de perm car les chemins ne semblent même pas exister dans le contexte dans lequel Bundler est exécuté. : -/ – picardo

Répondre

2

Ceci est presque certainement un problème de permission. Cela dit, s'il vous plaît essayez Phusion Passenger git master; Nous avons ajouté des vérifications d'autorisation agressives. Désormais, il devrait vous dire exactement ce qui ne va pas et ce qui doit être corrigé au lieu de laisser les erreurs avec des messages d'erreur cryptiques comme ce que vous voyez maintenant. Bundler pense que les chemins n'existent pas en raison de problèmes d'autorisation. Plus précisément: File.directory?("https://stackoverflow.com/a/b/c") renvoie false si /, /a ou /a/b ne possèdent pas les bons fichiers exécutables pour le propriétaire du processus en cours.

+0

J'ai essayé "chmod -R 777/var/www/rails" mais cela n'a pas fonctionné. Est-ce que je fais ça bien? (Merci pour la bonne réponse en passant.) – picardo

+0

Vous devez également vérifier/var/www et/var. – Hongli