rbenv pour les développeurs

| Synbioz | Bovino |

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 versions 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.

L'article original peut être lu sur le blog de Synbioz : rbenv pour les développeurs.

Commentez

- Titre : rbenv pour les développeurs

- Auteurs : Synbioz, Bovino

- Parution : 27 janvier 2012

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2012 Synbioz. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Utilisation quotidienne

- Installation

- Définition des versions

- Les gemsets

- rbenv et Pow

- Remerciements

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.

Remerciements

Cet article a été publié avec l'aimable autorisation de Synbioz, l'article original (rbenv pour les développeurs) peut être vu sur le blog de Synbioz.

Nous tenons à remercier ClaudeLELOUP pour sa relecture attentive de cet article.