Comment puis-je mettre à niveau mon ruby ​​1.9.2-p0 vers le dernier niveau de patch en utilisant rvm?

Ma version actuelle de ruby ​​est ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0] mais je souhaite la mettre à jour au dernier niveau de patch en utilisant rvm. Comment puis-je faire ceci?

Tout d’abord, mettez à jour votre installation RVM en exécutant rvm get stable .

Pour vous assurer que vous utilisez la nouvelle version de RVM, vous devez alors lancer rvm reload (ou simplement ouvrir un nouveau terminal).

Une fois cela fait, vous pouvez demander à RVM de lister les versions de ruby ​​disponibles à installer en lançant rvm list known .

Dans la sortie, vous devriez maintenant voir:

 # MRI Rubies ... [ruby-]1.9.2[-p320] ... 

Les crochets autour du niveau de patch indiquent qu’il s’agit actuellement du niveau de patch par défaut de RVM pour ruby ​​1.9.2.

Enfin, pour installer la nouvelle version de ruby, lancez simplement rvm install 1.9.2 – et attendez qu’elle se comstack!

Mettez à niveau l’interprète de ruby et conservez les gemsets existants:

 $ rvm upgrade 1.9.2-p0 1.9.2 Are you sure you wish to upgrade from ruby-1.9.2-p0 to ruby-1.9.2-p136? (Y/n): Y 

Pour remplacer par la dernière version stable de 1.9.2. Cela évite le fouillis.

Quelques astuces utiles supplémentaires grâce aux commentaires (@Mauro, @James, @ACB)

 $ rvm list known # NOTE: you probably want to upgrade your rvm first, as the list of known rubies seems to be coupled to the rvm version. $ rvm get stable $ rvm list known #pick your ruby 

Première mise à jour RVM:

 rvm get stable 

Ensuite, mettez à jour votre version de Ruby:

 rvm upgrade 2.0.0 

Choisissez oui pour toutes les questions:

 Are you sure you wish to upgrade from ruby-2.0.0-p195 to ruby-2.0.0-p247? (Y/n): Y Are you sure you wish to MOVE gems from ruby-2.0.0-p195 to ruby-2.0.0-p247? This will overwrite existing gems in ruby-2.0.0-p247 and remove them from ruby-2.0.0-p195 (Y/n): Y Do you wish to move over aliases? (Y/n): Y Do you wish to move over wrappers? (Y/n): Y Do you also wish to completely remove ruby-2.0.0-p195 (inc. archive)? (Y/n): Y 

Si vous souhaitez mettre à jour vos gemmes avec les dernières versions, vous pouvez faire:

 rvm all do gem update 

EDIT: Je viens de le faire aujourd’hui pour la dernière version de ruby ​​2.0.0 (j’ai mis à jour de ruby-2.0.0-p195 à ruby-2.0.0-p353). Après cela, j’ai eu une erreur de segmentation lorsque j’ai essayé de mettre à jour les gems. Cela se produit car les gems ont été installés pour ruby-2.0.0-p195 et certains d’entre eux sont incompatibles avec p353.

Vous pouvez maintenant essayer de trouver les gems incompatibles, mais la solution la plus simple consiste à supprimer toutes les gemmes installées et à les réinstaller. J’ai simplement supprimé le répertoire gems/ruby-2.0.0-p353 situé dans /usr/local/rvm . Cela pourrait être ailleurs pour vous.

Ensuite, j’ai lancé un gem install bundler et pour chacune de mes applications de rails, j’ai fait une bundle install .

comme ça:

 rvm update; rvm reload rvm install ruby-1.9.2-p136 rvm --default ruby-1.9.2-p136 

Vous pouvez installer n’importe quel niveau de patch en suivant la page de leur wiki .

De plus, chaque ruby ​​est indépendant, donc vous n’êtes pas vraiment en train de «mettre à jour et conserver les gemmes», mais vous installez une nouvelle version de correctif, puis vous installez les gemmes dans ce nouvel environnement Ruby.

C’est peut-être que les gemsets entrent en jeu, mais je ne les utilise pas.

N’oubliez pas de mettre à jour votre mémoire, juste au cas où il y aurait un certain temps.

La réponse de npad définit clairement les bases pour que je ne répète pas ces étapes, mais il y a plusieurs réponses ici suggérant d’utiliser la rvm upgrade . Je sais que rvm vous donne l’option, mais c’est un peu dangereux.

OMI, le plus sûr et plus “rvm way” consiste à rvm install d’abord la nouvelle version de ruby, puis à utiliser la commande rvm gemset copy pour copier votre (vos) gemset vers la nouvelle version de ruby, par exemple rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset . Ensuite, vous pouvez facilement changer votre projet en utilisant le gemset nouvellement copié (je recommande d’utiliser un fichier .rvmrc dans votre répertoire de projet) et voir si votre code échoue. Si c’est le cas, revenir à l’ancienne version de Ruby consiste simplement à changer de gemset.

Mais même si vous n’utilisez pas les gemsets (bien que je suppose que vous l’avez fait depuis que vous avez marqué des rails sur cette question), l’utilisation de la rvm upgrade peut entraîner des échecs inattendus. Et si votre code casse, vous devez maintenant réinstaller l’ancienne version. Prenez juste un peu plus de temps et faites-le de manière propre.

Je suppose que son rvm install 1.9.2-head

Vous pouvez voir les rbuy disponibles avec la rvm list known

Cet article de blog devrait être utile: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

essentiel:

 rvm get head rvm reload wget https://gist.github.com/raw/1008945/4edd1e1dcc1f0db52d4816843a9d1e6b60661122/ruby-1.9.2p290.patch rvm install ruby-1.9.2-p290 --patch ruby-1.9.2p290.patch -n patched