2012-09-26 7 views
2

Contexte:Comment exécuter une version spécifique de râteau

  • Je reçois des erreurs à chaque fois que je lance râteau dans un projet plus ancien. (rake constant non initialisé: DSL).
  • Le projet rails en question est un ancien projet qui a été lancé avec Rails 2.1 (je pense), et depuis, j'ai mis à jour le système d'exploitation sur mon ordinateur portable et fait des mises à jour pour le faire fonctionner .
  • À l'heure actuelle, l'application rails fonctionne bien, à condition que RAILS_GEM_VERSION soit réglé sur 2.3.5. Je ne suis pas sûr si l'application était complètement mis à jour vers Rails 2.3.5.
  • Il n'y a pas de Gemfile dans mon ancien projet.
  • Si je crée un tout nouveau projet de rails (et supprime RAILS_GEM_VERSION), rake s'exécute correctement.

Ma question: Pour dépanner, j'aimerais essayer de nouvelles versions de rake. Je voudrais savoir comment forcer une version spécifique à être utilisée, car il semble que j'ai plusieurs versions installées.

Infos sur mon environnement:

$ gem list rake 

*** LOCAL GEMS *** 

rake (0.9.2.2, 0.9.2, 0.8.7, 0.8.3) 


$ rake --version 
rake, version 0.8.7 

Il semble donc que ça monte la version 0.8.7. Tous les fichiers d'aide en ligne semblent me dire de spécifier la version rake dans le Gemfile, mais il n'y en a pas dans ce projet. (? Peut-être est antérieure gemfiles)

Si j'UNSET la variable RAILS_GEM_ENVIRONMENT tout à fait, et essayez d'exécuter rake, je reçois:

rake aborted! 
can't activate rails (= 2.3.5, runtime) for [], already activated rails-3.2.8 for [] 

Aucun des fichiers de configuration de l'environnement dans mon ancien projet défini cette variable soit.

+2

http://stackoverflow.com/questions/6243304/use-older-version-of-rake Cela peut être utile. Avez-vous essayé la solution de soulignement? – John

+0

J'ai juste essayé la solution de soulignement, mais quand je fais: $ rake \ _0.9.2 \ _ --version, il dit toujours qu'il utilise 0.8.7. – antun

+0

J'ai creusé un peu et je comprends que la méthode de soulignement ne fonctionne pas pour moi. Apparemment, pour les gemmes exécutables (comme rake) il devrait y avoir un wrapper qui l'appelle dans le chemin. Cependant, pour moi,/usr/bin/rake est un lien symbolique vers ../../System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/rake. Ce n'est * pas * la même chose que mes rails exécutables. Pour moi,/usr/bin/rails est un script shell qui extrait la version de la ligne de commande. Pouvez-vous chat votre fichier/usr/bin/rake? – antun

Répondre

6

This may be of help. Avez-vous essayé la solution de underscore?

Exemple:

rake _0.9.2_ 
+0

C'est la bonne réponse, mais dans mon cas mon environnement était un peu foiré. (Voir les commentaires ci-dessus à propos de l'utilisation de râteau vierge gem pour le corriger). – antun

1

vous pouvez exécuter rake version spécifique en utilisant cette

bundle

râteau exec ...

plus de détails, voir ce - bundle exec, rake

+1

Les documents pour bundle-exec indiquent qu'il utilise ce qui est spécifié dans le fichier Gemfile. Mais mon projet n'a pas de Gemfile. Je ne suis pas sûr de savoir pourquoi ça ne l'est pas; peut-être parce qu'il est basé sur une version de Rails antérieure à cela. – antun

Questions connexes