2009-04-28 4 views
2

J'ai une ancienne application Rails que je dois exécuter. Mais j'ai la dernière version de Rails.Ai-je besoin de revenir à une ancienne version de Rails pour exécuter une seule application existante (parmi d'autres problèmes)?

Lorsque je tente d'exécuter cette application plus il est dit:

Missing the Rails 1.99.0 gem. Please gem install -v=1.99.0 rails

Mais quand je lance la commande: gem install rails -v = 1.99.0

ERROR: could not find gem rails locally or in a repository

Je ne sais pas ce que à faire ensuite. Est-ce que quelqu'un pourrait m'aider à comprendre ce qui se passe ici?

Et ma deuxième question, liée à ce problème est: Il semble stupide que je dois revenir à une ancienne version de Rails juste pour exécuter cette application ancienne - il doit y avoir une meilleure façon de le faire?

Répondre

3

AFAIK, v1.99.0 est une sorte de v2.0 préversion, vous pouvez donc essayer d'installer v2.0.x, changer le RAILS_GEM_VERSION dans config/environment.rb et runing rake rails:update.

Si vous y pensez, ce n'est pas aussi bête que cela puisse paraître au premier abord. Vous créez une application en utilisant un framework Web en évolution rapide en tant que RoR. Vos choix sont: continuer à développer votre application à peu près au même rythme que le cadre évolue, ou geler les gemmes de rails (et tout ce dont votre application dépend, comme les gemmes, les plugins) dans votre application afin de la rendre moins fragile mises à jour.

+0

Oh, ce que je voulais dire à propos de « stupide » est: je dois installer un petit bijou pour exécuter cette application et je dois le désinstaller et installez une gemme de rails différente pour une autre application. Cela me semble idiot. Y at-il un moyen d'installer une gemme de rails pour chacune des versions de rails que je dois exécuter et ensuite exécuter tout ce dont j'ai besoin à chaque fois? Ou dois-je installer et désinstaller plusieurs fois? – Bijou

+0

Vous pouvez avoir plusieurs installations de Rails sur un système en même temps - c'est pour cela que RubyGems est conçu. Votre problème particulier ici est que 1.99.0 n'était pas une "vraie" version et n'est donc plus disponible sur les serveurs gem. –

+0

Cela a fonctionné! Merci les gars. Donc rails sait que j'ai besoin de la version 2.0.1 parce que c'est ce que j'ai mis dans le fichier environment.rb? Donc, quand je lance un script/serveur, je n'ai pas besoin de passer de paramètres explicites. Et je peux toujours exécuter mes nouvelles applications Rails sans désinstaller quoi que ce soit car environment.rb indiquera d'utiliser la version plus récente de Rails pour ceux-ci. J'espère avoir bien compris cela. – Bijou

2

En ce qui concerne la deuxième question: oui c'est bête. Heureusement, l'équipe de Rails a détecté cette stupidité et à un moment donné, elle nous a donné la possibilité de "geler" les versions de bibliothèques Rails requises par une application (et aussi des versions de gem spécifiques) dans le répertoire vendor.

Pour geler votre version de Rails:

rake rails:freeze:gems 

Il y a un good blog post d'un tout en décrivant ce retour.

0

À moins d'installer et de déployer RVM, votre installation annulera l'installation de vos rails système, ce qui aura un impact sur vos autres projets. Si vous souhaitez administrer manuellement votre environnement de développement de cette manière, vous pouvez d'abord désinstaller les rails, puis installer la version souhaitée des rails pour le projet en cours.

Mais essayez d'installer votre petit bijou de rails à la place avec cette syntaxe:

sudo gem install rails -v 1.99.0 
Questions connexes