lundi 13 septembre 2010

Jongler avec les versions de #ruby: rvm et bundler


La gestion de version des machines virtuelles Java, Python ou autre est un exercice difficile. Il en est de même pour les versions des librairies.
Dans l'écosystème Ruby des solutions existent : RVM et Bundler
Ces deux projets sont l'illustration du dynamisme de la communauté Ruby.

RVM

Ruby Version Manager, il permet d'avoir differents interpréteurs Ruby (RMI, Rubinius, Maglev, Jruby) avec pour chacun des versions différentes.
J'utilise habituellement la version 1.8.7 sous Debian , j'ai envie de tester la version 1.9.2 sans mettre en l'air mes programmes. Pas de problème avec rvm !
La commande rvm me permet de basculer à la fois l'interpréteur mais aussi le lien vers le dépot des gemmes.

ex :
Pour obtenir la liste de mes interpréteurs:

rvm list

rvm rubies

ruby-1.8.7-p302 [ i386 ]
ruby-1.9.2-p0 [ i386 ]
Pour basculer d'un à l'autre:

rvm 1.8.7 ou rvm 1.9.2


Tous mes liens ruby (/usr/bin/ruby) et gems pointent vers la bonne version.

Pour installer un interpréteur :
 rvm install ruby-1.9.2

Installing Ruby from source to: /usr/local/rvm/rubies/ruby-1.9.2-p0, this may take a while depending on your cpu(s)...

#fetching ruby-1.9.2-p0
#downloading ruby-1.9.2-p0, this may take a while depending on your connection...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 8296k 100 8296k 0 0 101k 0 0:01:21 0:01:21 --:--:-- 4210
#extracting ruby-1.9.2-p0 to /usr/local/rvm/src/ruby-1.9.2-p0
#configuring ruby-1.9.2-p0
#compiling ruby-1.9.2-p0
#installing ruby-1.9.2-p0
#rubygems update for /usr/local/rvm/gems/ruby-1.9.2-p0@global
#rubygems update for /usr/local/rvm/gems/ruby-1.9.2-p0
#shebangs adjustment for ruby-1.9.2-p0 (gem irb erb ri rdoc testrb rake).
#importing initial gems
#complete install of ruby-1.9.2-p0

rvm implémente la notion de dépot de gemme mutualisé ou spécifique. Un gemme peut etre installé et partagé pour tous les interpréteurs.

J'ai réussi à faire fonctionner mon Rails 2.3.4 sur ruby 1.8.2 et récupérer une version de Rails 3.0 sans perturber ma machine. On peut ainsi lancer à la fois une application Rails 2.n et un Rails 3.n.

L'installation de rvm se fait sous forme d'archive et en tant qu'utilisateur root, la ligne :

[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm"
doit etre ajoutée au lancement du shell.

Pour avoir la certitude que rvm fonctionne, la commande :

type rvm | head -n1

Doit retourner : rvm is a function

Bundler


Cet utilitaire permet de fixer les dépendance et les versions utilisées par un projet. Si celles ci ne sont pas installées, Bundler ira les chercher et les installer.


Good hacking

Aucun commentaire: