Blog tech

rbenv pour les développeurs

Rédigé par Nicolas Cavigneaux | 16 janvier 2012

Il y a quelques jours, j’ai décidé d’essayer rbenv dont j’entendais beaucoup parler pour sa facilité de mise-en-œuvre côté serveur.

rbenv est un gestionnaire de version de Ruby comparable à RVM mais qui m’a rapidement séduit par sa légèreté et son élégance. C’est rapide, facile à mettre en œuvre, pratique à l’utilisation et tout à fait dans la philosophie des utilitaires Unix.

J’ai donc supprimé RVM au profit de rbenv. N’allez pas croire que RVM est un mauvais outil, je me sens juste plus à l’aise avec rbenv qui correspond mieux à mes attentes.

Utilisation quotidienne

Voici un petit résumé des étapes à suivre et des pièges potentiels. Étant sous OS X, j’ai décidé d’installer rbenv via HomeBrew. il est également possible d’installer rbenv via git.

Installation

$ brew update
$ brew install rbenv
$ brew install ruby-build

Vous avez maintenant votre installation de base. Nous avons installé ruby-build qui va nous permettre de construire facilement nos versions de Ruby sans avoir à récupérer manuellement les sources. Rbenv ayant pour unique but de gérer la version de Ruby en cours d’utilisation, il préfère déléguer ses tâches à des paquets dédiés bien que vous le verrez, à l’utilisation c’est intégré de manière transparente.

Il faut maintenant demander à votre shell d’utiliser rbenv, en ajoutant ceci à votre .zsh_profil ou .bash_profile :

  eval "$(rbenv init -)"

Relancez un shell, rbenv est prêt à être utilisé.

Définition des versions

$ rbenv install 1.9.2-p290
$ rbenv global 1.9.2-p290

Vous avez maintenant Ruby 1.9.2 d’installé et défini comme version par défaut.

Si pour un projet donné vous devez utiliser une autre version :

$ cd Code/foo
$ rbenv local ree-1.8.7-2011.03

rbenv local a pour effet de créer un fichier .rbenv-version qui définit la version de Ruby à utiliser dans ce répertoire.

Il est également possible de passer d’une version à l’autre quand bon vous semble :

$ rbenv shell 1.9.3-p0

Pour finir, vous pouvez connaitre les versions installées :

$ rbenv versions

et celles disponibles à l’installation :

$ rbenv install

Les gemsets

Les utilisateurs de rbenv ont tendance à penser que Bundler est largement suffisant pour gérer les dépendances. Nul besoin de gemset quand le projet lui même peut être le gemset. Si votre projet contient un Gemfile alors pourquoi ne pas faire :

$ bundle install --path vendor/bundle

Vos gems seront directement installés dans le répertoire vendor/bundle de votre projet.

Pensez à ne pas versionner ce répertoire, ce serait un non-sens dans le contexte de l’utilisation de Bundler.

Il est possible d’automatiser ce comportement de Bundler en ajoutant ceci à votre ~/.bundle/config :

---
  BUNDLE_PATH: vendor/bundle

Pour ceux qui ne sont pas convaincus et qui continuent à penser que les gems d’un projet doivent être gérés par un “vrai” gemset, il reste l’extension rbenv-gemset.

rbenv et Pow

J’ai rencontré un problème avec Pow après avoir supprimé RVM, mes instances ne répondaient plus et les logs montraient clairement un problème de version de Ruby.

Il s’avère que Pow n’a pas connaissance des chemins nécessaires au fonctionnement de rbenv de manière automatique même si votre shell fonctionne parfaitement.

Le problème se règle en lui donnant les informations nécessaires via le fichier ~/.powconfig :

export PATH=/Users/cavigneaux/.rbenv/shims:/Users/cavigneaux/.rbenv/bin:$PATH

J’espère que ces quelques informations vous aideront et vous donneront envie de faire un petit essai de rbenv.

L’équipe Synbioz.

Libres d’être ensemble.