web-dev-qa-db-fra.com

Changer la version de Rails utilisée par rvm

Voici mes joyaux locaux:

$ gem list

*** LOCAL GEMS ***

actionmailer (4.0.0, 3.2.14)
actionpack (4.0.0, 3.2.14)
activemodel (4.0.0, 3.2.14)
activerecord (4.0.0, 3.2.14)
activerecord-deprecated_finders (1.0.3)
activeresource (3.2.14)
activesupport (4.0.0, 3.2.14)
arel (4.0.0, 3.0.2)
atomic (1.1.13)
builder (3.1.4, 3.0.4)
bundler (1.3.5)
bundler-unload (1.0.1)
erubis (2.7.0)
hike (1.2.3)
i18n (0.6.5)
journey (1.0.4)
json (1.8.0)
mail (2.5.4)
mime-types (1.24)
minitest (4.7.5)
multi_json (1.7.9)
polyglot (0.3.3)
rack (1.5.2, 1.4.5)
rack-cache (1.2)
rack-ssl (1.3.3)
rack-test (0.6.2)
Rails (3.2.14)
railties (4.0.0, 3.2.14)
rake (10.1.0)
rdoc (3.12.2)
rubygems-bundler (1.2.2)
rubygems-update (2.0.7)
rvm (1.11.3.8)
sprockets (2.10.0, 2.2.2)
sprockets-Rails (2.0.0)
thor (0.18.1)
thread_safe (0.1.2)
tilt (1.4.1)
treetop (1.4.15)
tzinfo (0.3.37)

Mais quand je tape Rails -v je reçois ceci:

 $ Rails -v
Rails 4.0.0
 $ which Rails
/Users/polonium/.rvm/rubies/Ruby-2.0.0-p247/bin/Rails

Comment puis-je spécifier que rvm utilise Rails version 3.2.14?

Merci d'avance

25
Pol0nium

Vous pouvez créer une nouvelle application Rails avec une version particulière de Rails, comme celle-ci.

Rails _3.2.14_ new myApp
43
Santhosh

Comment puis-je spécifier que rvm utilise Rails version 3.2.14?

rvm n'a rien à voir avec Rails. rvm est utilisé pour gérer plusieurs installations Ruby. Et chacune de vos installations Ruby peut être associée à plusieurs gemsets. Par exemple, supposons que Ruby 1.9.3 soit installé et que vous ayez créé deux jeux de pierres précieuses pour Ruby 1.9.3: gemsetA et gemsetB. Si vous dites à rvm d’utiliser Ruby 1.9.3 avec gemsetA, cela signifie:

  1. Vos programmes Ruby seront exécutés par Ruby 1.9.3.

  2. Vos programmes Ruby peuvent nécessiter n'importe quelle gemme dans gemsetA (ce qui permet ensuite à votre programme d'utiliser les méthodes (ou classes) définies dans gemsetA), mais les gemmes de gemsetB ne peuvent pas être vues par votre programme Ruby.

Voici un exemple concret:

~$ rvm list

rvm rubies

   Ruby-1.8.7-p370 [ i686 ]
 * Ruby-1.9.3-p194 [ x86_64 ]
=> Ruby-2.0.0-p0 [ x86_64 ]
   Ruby-2.0.0-p247 [ x86_64 ]

# => - current
# =* - current && default
#  * - default


~$ rvm use 1.9.3-p194
Using /Users/7stud/.rvm/gems/Ruby-1.9.3-p194

~$ rvm gemset list   (This lists only the gemsets for the current Ruby version)

gemsets for Ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/Ruby-1.9.3-p194)
=> (default)
   global
   programming
   Rails3tutorial
   Rails4

~$ rvm gemset use programming
Using Ruby-1.9.3-p194 with gemset programming

Après cela, mes programmes Ruby seront exécutés par Ruby 1.9.3 et toutes les gemmes du gemset de programmation peuvent être requises dans mon programme Ruby. Vous pouvez utiliser un raccourci pour exécuter ces deux commandes en une seule étape:

rvm use Ruby 1.9.3-p194@programming

Vous venez de combiner la version Ruby et le gemset avec un "@" entre eux.

Mais quand je tape Rails -v j'obtiens ceci:

$ Rails -v
Rails 4.0.0

En effet, le gemset actuel contient la gemme de Rails 4.0.0. Si vous voulez voir $ Rails -v output Rails 3.2.14, vous devez indiquer à rvm de passer à un gemset contenant la gem Rails 3.2.14. 

Cependant, vous pouvez obliger rvm à basculer automatiquement vers la version et le gemset appropriés pour votre projet Rails. Dans votre Gemfile, ajoutez un commentaire après la version de Ruby:

Ruby '2.0.0'
#Ruby-gemset=railstutorial4_gems

Ensuite, chaque fois que vous basculez vers le répertoire contenant votre projet Rails, rvm basculera automatiquement le Ruby actuel vers Ruby 2.0.0 et le gemset actuel vers railstutorial4_gems. Si vous modifiez des répertoires en dehors de votre application Rails, rvm changera le Ruby actuel et le gemset actuel à leur état d'origine.

Je suis juste un débutant de Rails, mais voici les étapes que j’utilise pour créer un nouveau projet, qui sont tout à fait extraites du livre ferroviaire ( http://Ruby.railstutorial.org/Ruby-on-Rails-tutorial- livre )

1)

.../Rails_projects$ rvm use <Ruby version here>@<new gemset name here> --create 

e.g.

.../Rails_projects$ rvm use Ruby-1.9.3-p194@myapp_gemset --create

2) 

.../Rails_projects$ gem install Rails --version 3.2.14

Le gemset actuel étant le gemset myapp, cette commande installe le gem Rails 3.2.14 dans le gemset myapp.

3)

.../Rails_projects$ Rails new myapp
.../Rails_projects$ cd myapp

Le gemset actuel est toujours myapp_gemset.

4) 

.../Rails_projects/myapp$ Rails -v
Rails 3.2.14

Au cas où quelqu'un se demanderait ce que sont les deux joyaux suivants:

gemsets for Ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/Ruby-1.9.3-p194)

=> (default)
   global

rvm crée ces deux joyaux pour chaque version de Ruby que vous installez. Après avoir installé une version de Ruby, si vous ne créez pas vous-même un gemset pour cette version de Ruby et que vous installez une gemme, celle-ci est intégrée au gemset (par défaut). Et, si vous voulez que tous vos gemsets contiennent un gem spécifique, vous pouvez passer au gemset global et y installer le gem. 

Mettre à jour: -------

Pour maintenir la compatibilité avec les autres gestionnaires de versions de Ruby, vous pouvez spécifier la version de Ruby et le nom de gemset de votre projet dans un fichier différent plutôt que dans le Gemfile:

$ cd ~/Rails_projects/myapp

~/Rails_projects/myapp$ echo 2.0.0 > .Ruby-version
~/Rails_projects/myapp$ echo myapp_gemset > .Ruby-gemset

Vous obtiendrez toujours la même version automatique de Ruby et le changement de gemset lorsque vous cd dans le répertoire de votre projet. Voir la documentation de rvm ici .

43
7stud

le chemin que vous avez trouvé /Users/polonium/.rvm/rubies/Ruby-2.0.0-p247/bin/Rails n'est pas le chemin correct que vous auriez trouvé dans l'installation standard de RVM tout en utilisant correctement RVM. Ce que vous verriez devrait être: /Users/polonium/.rvm/gems/Ruby-2.0.0-p247/bin/Rails

pour le faire fonctionner correctement, essayez ce flux:

rvm use 2.0.0
rvm gemset empty
rvm use @Rails3 --create 
gem install Rails -v "~>3.2"
rvm use @Rails4 --create
gem install Rails -v "~>4"

de cette façon, vous pouvez maintenant basculer entre ces deux installations Rails avec:

rvm use 2.0.0@Rails3
Rails -v             # Rails 3.2...
rvm use 2.0.0@Rails4
Rails -v             # Rails 4.0...
19
mpapis

vous devriez faire: gem installer 'Rails' -v '3.2.13'

Vous devriez utiliser un gemset propre, si vous utilisez rvm, vous pouvez essayer:

rvm gemset crée rvm gemset utilise 

Maintenant que vous avez un gemset propre, il est temps d'installer Rails,

gem installer Rails -v '3.2.13' 

et ensuite créer une application Rails,

Rails nouveau nom_app

5
KKB

Assurez-vous de vérifier le gemset global en vous assurant au préalable que vous utilisez la version de Ruby que vous souhaitez utiliser.

$Ruby -v

Puis passez au gemset global (le gemset global s’applique à tous les gemsets, alors assurez-vous de le garder propre et universel… ou global, d'où son nom)

$rvm gemset use global

Après cela, vérifiez la liste des gemmes qui peuvent l’affecter, comme la gemme "railties" mentionnée par Harsha en tapant

$gem list

Parfois, le gemset global peut être peuplé par un bijou accidentel qui affectera tous les autres gemsets. Si vous trouvez un joyau égaré, vous pouvez le désinstaller simplement avec 

$gem uninstall examplegem 

ou pour une version spécifique de ce joyau passez dans le -v avec la version entre guillemets

$gem uninstall examplegem -v"3.2.1"

Et lisez le commentaire de 7stud sur la création et l'utilisation de RVM pour changer de gemsets.

0
jrichocean

"Railties (4.0.0," est le problème que vous avez. Je suppose qu'il a été installé par erreur?

Désinstallez cette version à l'aide de, gem, désinstallez Railties, puis sélectionnez l'option avec 4.0.0.

Maintenant, la commande "Rails -v" renverra votre version attendue qui est "3.2.14"

0
user3342067