2009-12-14 11 views
0

Je déplace une application rails de mon bureau vers un hôte partagé, et je rencontre des problèmes avec une dépendance à la gemme.gem en cours de chargement par l'initialisation du script/console, mais pas l'initialisation du serveur

J'ai ce déclaré dans mon environment.rb:

config.gem "icalendar" 

Quand j'ai essayé à partir d'une console pour l'application, j'ai des messages d'erreur demandant que je ratisse: installer la pierre précieuse. J'ai utilisé le processus d'installation d'hébergement gem partagé pour installer la gemme dans ~/ruby ​​/ gems et confirmé que la gemme était là.

ls -rlt ~ruby/gems/gems/icalendar-1.1.0/ 
total 64 
drwxr-xr-x 4 user user 4096 Dec 12 13:15 docs/ 
drwxr-xr-x 3 user user 4096 Dec 12 13:15 ../ 
drwxr-xr-x 5 user user 4096 Dec 12 13:18 test/ 
drwxr-xr-x 3 user user 4096 Dec 12 13:18 lib/ 

(j'ai remplacé l'utilisateur/groupe réel ici manuellement)

J'ai ensuite ajouté à mon environment.rb:

ENV['GEM_PATH'] = "/home/USER/ruby/gems" 

(Encore une fois, l'utilisateur réel remplacé)

La prochaine fois que j'ai couru script/console, l'application s'est bien chargée. Je me suis alors essayé de démarrer le serveur, et a obtenu cette erreur:

Missing these required gems: 
icalendar 

You're running: 
ruby 1.8.7.22 at /usr/bin/ruby 
rubygems 1.3.5 at /home/USER/ruby/gems, /usr/lib/ruby/gems/1.8 

J'ai essayé tordant le chemin un peu, mais qui n'a pas eu d'effet. J'ai fourré un peu ici et sur google en général et n'ai pas vu quelque chose qui a directement résolu ce problème - je pense que la console et le serveur utiliseraient tous deux le GEM_PATH dans la configuration de l'environnement. Ne ressemble pas non plus à un problème d'autorisations. Des idées? Merci pour l'aide avec ça.

Répondre

0

Assurez-vous de définir la variable d'environnement avant le bloc initialiseur:

ENV['GEM_PATH'] = '...' 
Gem.clear_paths 

Rails::Initializer.run ... 
+0

Eh oui, je spécifiant ENV [ 'GEM_PATH' ] en haut du fichier. Ce qui semble l'avoir corrigé ajoutait également Gem.clear_paths. Merci! – greg

0

Si vous utilisez Passenger, vous devriez utiliser une petite astuce pour faire fonctionner la variable d'environnement GEM_PATH. Suivre this tutorial.

0

dans la même situation (lorsque le serveur a commencé, certains pathes ne sont pas inclus dans la variable LOAD_PATH) ajouter

require 'rubygems' 

avant d'inclure d'autres pierres précieuses m'a aidé.

ou vous pouvez ajouter manuellement chemin de votre bijou

$LOAD_PATH << '/home/USER/ruby/gems/gems/icalendar-1.1.0/lib'