2010-09-08 4 views
1

J'ai essayé d'installer nginx avec passager pendant quelques jours maintenant et continue à rencontrer des problèmes. Quand je vais à mon application Rails avec mon navigateur, il dit: Missing the Rails 2.3.8 gem. Please gem install -v=2.3.8 rails, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.Passager avec Nginx ne peut pas trouver des rails 2.3.8 gem

Si je tape gem list dans mon terminal il montre: rails (3.0.0, 2.3.8, 2.3.5)

Ce qui est drôle est que passager trouveront mes pierres précieuses rubis très bien quand je l'utilise avec Apache sur la même machine! Mais j'aimerais expérimenter nginx car Apache ne fait pas ce que je veux.

La machine est Ubuntu 10.04 serveur

  • which ruby Spectacles: /usr/local/bin/ruby (REE)
  • Ce sont les directives de passagers dans le nginx.conf:
    • passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15; passenger_ruby /usr/local/bin/ruby;
+0

Quelles versions de Nginx et Passenger? (Je vois le Passager 2.2.15 dans le chemin de la gemme.) Êtes-vous sûr que Passenger obtient toutes les directives de configuration pertinentes de Nginx? – pjmorse

Répondre

0

@Nik Rishav est correct en ce sens que vous devez faire attention lors de l'installation de Ruby Enterprise Edition (REE) à côté du système Ruby. L'installation incorrecte de REE peut provoquer des choses très étranges.

Alors que Rails 3.0 pourrait être la cause de vos problèmes, mon instinct me dit que votre vrai problème est une étape manquée lors de l'installation de REE. Mais, au cas où cela ne fonctionnerait pas, une recherche rapide sur Google vous montrera un certain nombre de bons tutoriels vous montrant how to host a Rails app with Phusion Passenger for Nginx. Eh bien, allons-y, allons-nous! REE fonctionne bien avec le système Ruby, mais vous devez l'installer dans son propre répertoire. Par exemple:

/opt/ruby-enterprise-X.X.X/bin/ruby 

Votre autre option est d'installer uniquement les terres rares, mais cela pourrait ne pas être une option pour vous. Je soupçonne que lorsque Nginx s'exécute, il trouve REE comme vous l'avez spécifié. Avez-vous installé Passenger pour Nginx depuis la pile REE?

/opt/ruby-enterprise-X.X.X/bin/passenger-install-apache2-module 

Si ce n'est pas le cas, vous pourriez vouloir examiner cela. Je suppose que vous l'avez fait. D'après votre description, il ne semble pas que vous ayez dit à REE où trouver vos gemmes. Pour ce faire, vous devez définir REE comme interpréteur Ruby par défaut. Pour ce faire, ajoutez une entrée au fichier /etc/environment.Sur Ubuntu, le répertoire est /etc/environment. Ajouter le répertoire bin de terres rares à la variable d'environnement PATH, comme ceci:

PATH="/opt/ruby-enterprise-x.x.x/bin:/usr/local/sbin:/usr/local/bin" 

Placer REE premier dans le PATH définir comme la valeur par défaut interpréteur Ruby.

Ensuite, redémarrez Nginx, comme ceci:

sudo /etc/init.d/nginx restart 

Espérons que cela aide. J'ai eu ma part de problèmes de déploiement et cela peut vraiment être frustrant. Je ne le souhaite à personne ... Bonne chance!

+0

Hmm, peut-être que je devrais partir de zéro sur une machine virtuelle et voir si je peux passer par toutes les étapes sans les manquer. Je pensais que REE était installé sur/usr/local/bin/ruby ​​sur ma machine, et Ruby était installé sur/usr/bin/ruby. Je pense que vous avez raison de supprimer ruby ​​standard et d'essayer REE par lui-même. Cela le réduirait à moins de pièces mobiles qui pourraient causer des problèmes. – demersus

0

À titre de vérification , êtes-vous sûr que votre passager est installé dans la bonne version de ruby. essentiellement

Les deux rubis ont des gemmes séparées qui signifie que vous devez installer l'autre dans un ..

Vérifiez dans le répertoire /usr/local/lib/ruby/gems/1.8/gems pour voir si des rails 2.3. 8 est présent. Vous devez l'installer dans ce rubis.

Les deux rubis auront des fichiers bin gem pour l'installation ..

éventuellement/usr/bin/gem est pour le système ruby ​​ et/usr/local/bin/gem est pour votre installation de terres rares

+0

quand je vérifie /usr/local/lib/ruby/gems/1.8/gems il montre les rails 2.3.8 gem. Quand je tape 'quelle gemme' il montre/usr/local/bin/gem – demersus

+1

hmm il peut être possible que les rails 3 + la dernière version de rack soit à l'origine du problème. Juste pour tester l'intérêt, retirez les rails 3 et la dernière version de rack .. Je vais essayer ceci sur ma machine et vous le faire savoir. Si cela ne fonctionne pas .. essayez #passenger sur l'irc, –

+0

Quand je fais cela, j'ai: Missing the Rails gem. S'il vous plaît 'gem installer -v = rails' – demersus

Questions connexes