Choisir un Outil de Gestion de Version Ruby : rbenv vs RVM

Choisir un outil de gestion de version Ruby se résume souvent à deux acteurs : rbenv et RVM. Ce dernier a été largement accepté comme la norme, en grande partie en raison de sa large boîte à outils. Cependant, rbenv est devenu un concurrent sérieux avec son approche légère.

Sous le capot

Alors, comment ces outils font-ils le travail? C’est là que les choses deviennent un peu effrayantes avec RVM. RVM remplace la commande shell cd afin de charger les variables d’environnement Ruby actuelles. Non seulement le remplacement peut provoquer un comportement inattendu, mais cela signifie également que les rubis et les gemsets sont chargés lors du changement de répertoire.

rbenv fait les choses à la volée en utilisant des cales pour exécuter des commandes.

* Un répertoire de cales (~/.rbenv/shims) est inséré à l’avant de PATH.
* Le répertoire contient une cale pour chaque commande Ruby.
* Le système d’exploitation recherche une cale qui correspond au nom de la commande, qui à son tour la transmet à rbenv, déterminant la version Ruby à exécuter.

la configuration rbenv pour une application est simple:

# .ruby-version
2.3.0

La variable RBENV_VERSION permet également de spécifier rapidement une version Ruby via la ligne de commande. C’est en première ligne lorsque rbenv vérifie la version Ruby actuelle.

Déléguer la charge de travail

Il y a quelques fonctionnalités dans RVM qui en font l’outil le plus lourd. RVM est livré avec son propre mécanisme d’installation Ruby:

rvm install ruby-2.3.0

Avec rbenv, vous pouvez soit installer Ruby vous-même (en enregistrant sur ~/.rbenv/versions), soit utiliser ruby-build, un plugin qui installera les versions pour vous. Comme rbenv, ruby-build a une recette de homebrew.

brew install ruby-build
rbenv install 2.3.0

RVM donne la possibilité de séparer les dépendances par projet avec des gemsets. Les gemmets, cependant, appartiennent plus au passé, grâce à l’utilisation généralisée de Bundler.

Avec Bundler, on peut facilement gérer les gemmes pour un projet.

gem install bundler

# Gemfile in root of application
source 'https://rubygems.org'

gem 'rails'
gem 'rspec'

bundle install

Bien que la plupart des projets utilisent maintenant Bundler, le plugin rbenv-gemsets est l’équivalent rbenv des gemsets.

Light is Might

Bien que la polyvalence de RVM puisse être ingénieuse, en ce qui concerne la gestion des versions Ruby, elle peut être exagérée. L’utilisation de rbenv vous permet de garder les choses simples et de laisser d’autres outils gérer d’autres aspects du processus. l’accent mis par rbenv sur le contrôle des versions Ruby conduit à une configuration et à une configuration plus conviviales pour les développeurs. Nous utilisons rbenv avec nos applications depuis quelques années maintenant. En partenariat avec Capistrano, rbenv-capistrano simplifie la maintenance de la version Ruby pour nos environnements déployables.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.