· Tech watch

Ruby Version Manager (RVM)

Vous utilisez Ruby, et votre administrateur système grince des dents à chaque fois que vous lui demandez de mettre à jour la version de Ruby sur votre serveur en production ? Cette article est fait pour vous !

Ruby existe depuis une quinzaine d’années environ. Nous en sommes actuellement à la version 1.9.2 [[voici le lien de téléchargement de cette version : [ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p180.tar.gz->ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p180.tar.gz].]]. De fait, nous nous retrouvons à développer un projet avec une version spécifique du langage et bien souvent, des outils ne fonctionnant qu’avec une version particulière.

Ah ! s’il existait un moyen d’avoir toutes les versions de Ruby cohabitant sur une même machine et sans fausse note ? Ne cherchez plus : RVM est là !

LA solution : Ruby Version Manager

Développé par Wayne E. Seguin, RVM est un outil en ligne de commande permettant de gérer plusieurs installations différentes de l’interpréteur Ruby.

Il propose deux fonctionnalités salvatrices :
– le cloisonnement des versions de l’interpréteur Ruby
– la création d’espace clos et distinct de gems, via les gemset

Vous pouvez ainsi, selon votre plate-forme, faire tourner simultanément Ruby 1.8.6 et Ruby 1.9.2, tout en ayant en parallèle une instance de Ruby enterprise edition (REE). Et tout cela sans aucun conflit dans vos gems, merci Wayne !

Cerise sur le gâteau : vous pouvez, au sein d’une même version de votre interpréteur Ruby préféré définir plusieurs sous-ensembles gem. Il est maintenant facile d’avoir, pour deux projets différents, deux versions différentes d’une même gem grâce au gemset (ensemble hermétique dédié à l’installation et l’utilisation de gem).

Voici une schéma du fonctionnement des gemset :

– L’installation d’une nouvelle mouture de Ruby crée automatiquement les gemset @global et @default ;
– Les gems se trouvant dans @global sont aussi présentes dans les autres gemset.

Installation de RVM

Je ne vais expliquer que les principales actions, sans plus de détails, la documentation officielle étant très complète.

Les pré requis :
– le client git doit être présent ;
curl ou un équivalent.

Marche à suivre :
– exécuter

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

– ajouter à la fin du fichier de configuration de votre shell (~/.bashrc dans mon cas)

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

Vous pouvez maintenant installer votre version favorite de Ruby. Vous avez ici la liste des interpréteurs supportés.

Utilisation

– installer la dernière version stable de Ruby 1.9.2 (1.9.2-p180) :

rvm install 1.9.2

– installer la dernière version stable de ree (1.8.7-2011.03) :

rvm install ree-1.8.7

– Choisir (flag –default) une version de Ruby « par défaut » :

rvm use ree --default

– Définir un sous ensemble de gem par projet : c’est là l’autre point d’intérêt de RVM. En effet, pour une même version de Ruby, je peux définir plusieurs gemset :

rvm default
rvm --create use default@projetX

La suite ?

Mon expérience avec Ruby ne fait que commencer : il me reste des pans entiers de sa connaissance à découvrir et de nombreuses erreurs à commettre. Je reviendrai sans hésitation vous faire partager mes découvertes !