Category Archives: Ruby

Usando melhor o RVM: trabalhando com gemsets

O RVM (Ruby Version Manager) é uma ferramenta que permite que se trabalhe com diferentes versões de Ruby numa mesma máquina de forma simples.

A ideia desse post não é falar sobre como configurar o RVM do zero. Caso esteja interessado nisso, dê uma lida no post do Fabio Akita.

Uma das coisas mais comuns em tempos de Rails 3 é possuirmos aplicações já feitas em Rails 2, e enquanto isso queremos desenvolver em Rails 3. A solução para trabalharmos de forma simples e organizada com gems de versões diferentes dentro de uma mesma versão de ruby é usando as gemsets do RVM.

Uma gemset, como o próprio nome diz, é um conjunto de gems, no qual você atribui um nome para elas, e consegue alternar entre os mesmos facilmente. Dessa forma, podemos alternar entre diferentes versões de gems executando um simples comando no shell. Isso é útil para testarmos compatibilidades entre os nosso código e as versões das gems que ele utiliza.

O primeiro passo para criar uma gemset, considerando que o RVM já esteja instalado é: rvm gemset create nome_da_gemset. Com isso, uma nova gemset é criada com o nome definido. Agora que já temos a gemset criada, podemos utilizá-la com o comando rvm gemset use nome_da_gemset. É possível também trocar para uma gemset específica de uma versão definindo a RVM que se quer utilizar junto da gemset: rvm use 1.9.1@nome_da_gemset.

Para instalar gems dentro dessa versão, basta utilizar gem install nome_da_gem (sem o sudo).

Por padrão, as instalações do ruby dentro do RVM já possuem uma gemset. Para voltar para ela, basta acessar diretamente a sua rvm com rvm use 1.9.1, por exemplo.

Mas, nesse monte de gemsets, como posso saber em qual eu estou e quais eu tenho disponíveis para utilizar? Para o primeiro, existe o comando rvm gemset name.

É possível alterar o script do seu .bash_profile para mostrar o nome da gemset em que você está também, basta adicionar ao script que o próprio RVM sugere, o seguinte comando: (`rvm gemset name`), com isso, ele ficará da seguinte forma:

export PS1='\w `~/.rvm/bin/rvm-prompt i v` (`rvm gemset name`) `git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\ /`\[33[37m\]$\[33[00m\] '

Para listar as gemsets disponíveis, basta executar rvm gemset list e caso não precisa mais de uma gemset, basta executar rvm gemset delete nome_da_gemset.

Por fim, uma outra funcionalidade bastante útil é a criação de arquivos .rvmrc. Esses arquivos funcionam como um script de inicialização da rvm, e podem ser colocados inclusive dentro do diretório do seu projeto, dessa forma, você pode fazer com que quando você acesse o diretório do seu projeto pelo shell da sua máquina ele posicione o seu RVM na versão correta do seu ruby e também na gemset adequada.

Vale a pena dar uma olhada no site oficial para saber mais, tem muitas outras funcionalidades no RVM que podem ajudar bastante no desenvolvimento.

Editado: Existe uma forma mais simples de mostrar a gemset no PS1. Basta adicionar o parâmetro “g” ao rvm-prompt. Dessa forma, ficará:

export PS1='\w `~/.rvm/bin/rvm-prompt i v g` `git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\ /`\[33[37m\]$\[33[00m\] '
Obrigado Nelson Haraguchi por apontar.

Etiquetado ,
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.