Raccomando direnv . È un commutatore di ambiente per la shell.
Prima di ogni prompt verifica l'esistenza di un file ".envrc" nelle directory corrente e padre. Se il file esiste (e autorizzato), viene caricato in una sub-shell bash e tutte le variabili esportate vengono quindi catturate da direnv e quindi rese disponibili la shell corrente.
Ecco come usare direnv con ruby-install
+ ruby-install
Aggiungi questo a ~/.direnvrc
use_ruby() {
local ruby_root=$HOME/.rubies/$1
load_prefix "$ruby_root"
layout_ruby
}
Installa ruby-install ( brew install ruby-install
) e installa un mucchio di rubini.
ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0
E poi crea un paio di symlink per comodità:
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
E infine in qualsiasi progetto .envrc
:
use ruby 2.0
Questo metterà tutte le gemme nella .direnv/ruby
directory del progetto (facilita l'apertura delle gemme). il bundler inserirà i binari del wrapper .direnv/bin
(non di più bundle exec
!).
+ rbenv
È inoltre possibile utilizzare rbenv aggiungendo il use rbenv
comando in qualsiasi .envrc
file. Questo attiverà rbenv che a sua volta inserirà i wrapper ruby nel PERCORSO.
Si noti che non è necessario installare rbenv in .bashrc o .zshrc affinché funzioni.
+ RVM
Ecco il .envrc più complicato che utilizzo nei progetti ruby:
rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin
rvm viene utilizzato per selezionare la versione ruby giusta per te
i comandi di layout impostano automaticamente alcune delle solite variabili d'ambiente. Per ora esiste solo il layout rubino. Ciò che fa è impostare la variabile d'ambiente GEM_HOME e la sua directory bin sul tuo percorso. Poiché dipende dalla versione ruby, assicurati di chiamarlo dopo "rvm". Poiché ogni directory di layout ruby ha il proprio GEM_HOME, non è necessario utilizzare le gemme di rvm.
PATH_add antepone ed espande il percorso relativo indicato. In tal caso, lo uso per separare i binstub del bundler dai miei script bin conbundle install --binstubs .direnv/bundler-bin
Se vuoi scoprire cosa fanno esattamente quei comandi, per ora: cat direnv stdlib
| Di meno