Rbenv é uma excelente alternativa leve ao RVM. Se você está trabalhando em projetos pré-Bundler legados, entretanto, você vai querer suporte a gemset, que rbenv não tem.
Existe um plugin rbenv-gemset que funciona muito bem. Infelizmente, eu não gosto disso porque adiciona cerca de 250ms de tempo de execução para todos os comandos Ruby (na minha máquina, pelo menos).
Conjuntos de joias via rbenv-vars
Existe um plugin chamado rbenv-vars que permite definir variáveis de ambiente para cada projeto. Funciona permitindo que você tenha um .rbenv-vars
arquivo por projeto que pode se parecer com este:
# .rbenv-vars
PORT=8000
… e essa variável de ambiente estará disponível para todos os comandos Ruby emitidos para esse projeto.
Vamos usá-lo para definir um caminho de instalação personalizado do Gem para o seu projeto:
# .rbenv-vars
GEM_HOME=$HOME/.rbenv/gems/myproject
GEM_PATH=$HOME/.rbenv/gems/myproject
E, claro, vamos criar esse caminho primeiro usando:
$ mkdir -p ~/.rbenv/gems/myproject
Testando
Agora, os comandos Ruby (mais notavelmente gem
, ruby
) será invocado com esses caminhos gema. Vamos tentar:
$ gem list
**** LOCAL GEMS ****
Seu conjunto de joias agora deve estar puro e vazio.
$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.23
- GEM PATHS:
- /Users/rsc/.rbenv/gems/myproject
....
Ressalvas
Executáveis (como rails
) precisarão ser chamados manualmente, por exemplo ~/.rbenv/gems/myproject/bin/rails
,.
Se isso incomoda você, as possíveis maneiras de contornar isso são:
Sugando e apenas digitando os comandos longos
Colocar o caminho da gema dentro do caminho do projeto, ou seja
GEM_HOME=./.gemset
, e adicionar./.gemset/bin
ao seu$PATH
Criar um pequeno script bash que o adiciona ao seu caminho (
export PATH=$HOME/.rbenv/gems/myproject/bin:$PATH
) e invocá-lo sempre que estiver trabalhando naquele projeto