Je recommande direnv . C'est un sélecteur d'environnement pour le shell.
Avant chaque invite, il vérifie l'existence d'un fichier ".envrc" dans les répertoires courant et parent. Si le fichier existe (et autorisé), il est chargé dans un sous-shell bash et toutes les variables exportées sont alors capturées par direnv puis rendues disponibles le shell actuel.
Voici comment utiliser direnv avec ruby-install
+ ruby-installer
Ajoutez ceci à la ~/.direnvrc
use_ruby() {
local ruby_root=$HOME/.rubies/$1
load_prefix "$ruby_root"
layout_ruby
}
Installez ruby-install ( brew install ruby-install
) et installez un tas de rubis.
ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0
Et puis créez quelques liens symboliques pour plus de commodité:
ln -s .rubies/1.9 ruby-1.9.3-p*
ln -s .rubies/2.0 ruby-2.0.0
ln -s .rubies/2.2 ruby-2.2.0
Et enfin dans n'importe quel projet .envrc
:
use ruby 2.0
Cela placera toutes les gemmes dans le .direnv/ruby
répertoire du projet (facilite l'ouverture des gemmes). bundler placera les binaires wrapper .direnv/bin
(pas plus bundle exec
!).
+ rbenv
Il est également possible d'utiliser rbenv en ajoutant la use rbenv
commande dans n'importe quel .envrc
fichier. Cela activera rbenv qui à son tour placera les enveloppes ruby dans le PATH.
Notez qu'il n'est pas nécessaire d'installer rbenv dans le .bashrc ou .zshrc pour que cela fonctionne.
+ RVM
Voici le .envrc le plus compliqué que j'utilise sur les projets ruby:
rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin
rvm est utilisé pour sélectionner la bonne version de ruby pour vous
Les commandes de mise en page définissent automatiquement certaines des variables d'environnement habituelles. Pour l'instant, seule la mise en page ruby existe. Ce qu'il fait, c'est définir la variable d'environnement GEM_HOME et son répertoire bin sur votre chemin. Comme cela dépend de la version ruby, assurez-vous de l'appeler après "rvm". Puisque chaque répertoire de mise en page ruby a son propre GEM_HOME, vous n'avez pas besoin d'utiliser les gemsets de rvm.
PATH_add ajoute et développe le chemin relatif donné. Dans ce cas, j'utilise ceci pour séparer les binstubs du bundler de mes propres scripts bin avecbundle install --binstubs .direnv/bundler-bin
Si vous voulez savoir ce que font exactement ces commandes, pour l'instant: cat direnv stdlib
| Moins