Eu recomendo direnv . É um alternador de ambiente para o shell.
Antes de cada prompt, ele verifica a existência de um arquivo ".envrc" nos diretórios atual e pai. Se o arquivo existir (e autorizado), ele será carregado em um sub-shell bash e todas as variáveis exportadas serão capturadas pelo direnv e disponibilizadas no shell atual.
Aqui está como usar o direnv com o ruby-install
+ instalação do ruby
Adicione isso ao ~/.direnvrc
use_ruby() {
local ruby_root=$HOME/.rubies/$1
load_prefix "$ruby_root"
layout_ruby
}
Instale o ruby-install ( brew install ruby-install
) e instale um monte de rubis.
ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0
E faça alguns links simbólicos por conveniência:
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 finalmente em qualquer projeto .envrc
:
use ruby 2.0
Isso colocará todas as gemas no .direnv/ruby
diretório do projeto (facilita a abertura das gemas). o empacotador colocará binários de wrapper .direnv/bin
(não mais bundle exec
!).
+ rbenv
Também é possível usar o rbenv adicionando o use rbenv
comando em qualquer .envrc
arquivo. Isso ativará o rbenv, que por sua vez colocará os invólucros de rubi no PATH.
Observe que não é necessário instalar o rbenv no .bashrc ou no .zshrc para que isso funcione.
+ RVM
Aqui está o .envrc mais complicado que eu uso em projetos ruby:
rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin
rvm é usado para selecionar a versão correta do ruby para você
Os comandos de layout definem automaticamente algumas das variáveis de ambiente usuais. Por enquanto, apenas o layout ruby existe. O que ele faz é definir a variável de ambiente GEM_HOME e seu diretório bin para o seu caminho. Como depende da versão ruby, certifique-se de chamá-la após "rvm". Como cada diretório de layout ruby possui seu próprio GEM_HOME, você não precisa usar os gemsets do rvm.
PATH_add precede e expande o caminho relativo fornecido. Nesse caso, eu uso isso para separar os binstubs do bundler dos meus próprios scripts bin combundle install --binstubs .direnv/bundler-bin
Se você quiser descobrir exatamente o que esses comandos fazem, por enquanto: cat direnv stdlib
| Menos