RVM: Controlando várias versões de Ruby

30 08 2010
Ruby Version Manager

Ruby Version Manager

Olá Pessoal, hoje vou falar do RVM(Ruby  Version Manager)

ele é um gerenciador para vários ambientes de ruby, ou seja, você pode instalar por  exemplo ruby 1.8.7 , 1.9.1  ou até jruby e alternar entre ele facilmente. Qual o propósito do RVM ? Com o RVM você pode criar ambientes específicos para cada projeto, utilizando a versão de Ruby que mais se apropria a cada situação, mas o mais legal não é apenas o gerenciamento de ruby, mas sim das Gem’ s que você irá usar, resumindo, nessa ambiente criado você pode usar gems específicas em versões específicas, utilizando a versão do ruby de sua preferência. Alguns Benefícios:

  • Projetos mais independentes: Alguns projetos precisam de versões específicas gem’ s, ou  se você quiser instalar uma Gem para apenas um ambiente, tendo assim um maior controle, pois o ambiente padrão não conterá aquela gem.
  • Você pode testar como seu projeto se comporta com diferentes versões de gems
  • Versionamento do Ruby(é muito fácil alterar ente Ruby’ s)

talk is cheap, show me the code

Bom pessoal eu vou mostrar como se instala ele no ubuntu, porem ele se torna genérico depois da instalação .

Instalação

Bom primeiramente você deve ter o Ruby e o RubyGems  e o curl instalados, caso não tenha abra um terminal e digite

sudo apt-get install ruby rubygems curl

Você vai precisar do Git.

sudo apt-get install git-core

Aqui são mais algumas coisinhas para o funcionamento

sudo apt-get install build-essential zlib1g-dev libssl-dev libreadline5-dev

Um vez instalado o rubygems você instala o rvm como uma gem qualquer

sudo gem install rvm

ele irá instalar o rvm, mas ainda não esá totalmente configurado, precisamos acessar a pasta aonde ele foi instalado, e rodar a instalação dele manualmente, tem que acessar a pasta mesmo, eu já tentei acessar o arquivo diretamente mas não dá certo.

Não Faça isso com SUDO

cd /var/lib/gems/1.8/bin/
./rvm-install

Feito isso você já pode instalar os Rubies

Bom, existem muitos Rubies para você instalar e testar, para saber os que estão disponíveis use o seguinte comando:

rvm list know #no meu caso são esses abaixo
# MRI Rubies
(ruby-)1.8.6(-p399)
(ruby-)1.8.6-head
(ruby-)1.8.7(-p302)
(ruby-)1.8.7-head
(ruby-)1.9.1-p243
(ruby-)1.9.1-p376
(ruby-)1.9.1(-p429)
(ruby-)1.9.1-head
(ruby-)1.9.2-preview1
(ruby-)1.9.2-preview3
(ruby-)1.9.2-rc1
(ruby-)1.9.2-rc2
(ruby-)1.9.2(-p0)
(ruby-)1.9.2-head
ruby-head

# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.5.1
jruby(-1.5.2)
jruby-head

# Rubinius
rbx(-1.0.1)
rbx-head

# Ruby Enterprise Edition
ree-1.8.6
ree(-1.8.7)
ree-1.8.6-head
ree-1.8.7-head

# MagLev
maglev(-24067)
maglev-head

# Shyouhei head, the default mput
mput(-head)

# Mac OS X Snow Leopard Only
macruby(-nightly) # the default macruby
macruby-head      # Build from the macruby git repository

# IronRuby -- Not implemented yet.
ironruby-0.9.3
ironruby-1.0-rc2
ironruby-head

Eu sugiro instalar o Ruby Enterprise Edition (ree), que tem as mesmas funcionalidades do ruby normal, porem gasta cerca de 33% menos memória. Para instalar basta digitar RVM install e a versão do ruby que quer instalar.

rvm install ree
rvm install 1.9.2
rvm install jruby

Ele vai instalar os ambientes para você, demora um pouquinho, dependendo da sua conecxão

Se você não tiver o curl instalado ele vai dar um erro

fail: rvm requires curl. curl was not found in your active path.

basta digitar um

sudo apt-get install curl

para resolver o problema.

Alternando entre os Rubies

Depois de ter instalado, é muito fácil e rápido alternar entre os rubies com um simples comando:

rvm + nome do ruby(ree, 1.9.2, jruby, etc)
rvm ree
rvm jruby
rvm 1.9.2

para alternar entre o ruby desejado, use ruby -v para saber a versão de ruby que está usando

rvm jruby
ruby -v #para saber qual versão de ruby está sendo usada execute ruby -v
  jruby 1.5.1 (ruby 1.8.7 patchlevel 249) (2010-06-06 f3a3480) (OpenJDK 64-Bit Server VM 1.6.0_18) [amd64-java]
rvm ree
ruby -v #para saber qual versão de ruby está sendo usada execute ruby -v
  ruby 1.8.7 (2010-04-19 patchlevel 253) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2010.02
rvm 1.9.2
ruby -v #para saber qual versão de ruby está sendo usada execute ruby -v
  ruby 1.9.2dev (2010-07-11 revision 28618) [x86_64-linux]

Bom, mas temos que definir qual versão do Ruby será a padrão do RVM, para isso faça rvm –default nomedoruby, exemplo abaixo:

rvm --default ree #para usar o ree, se quizer o 1.9.2 ou o jruby,

subtitua o ree pelo nome do ruby que você quer, caso não seja o ree
Isto encerra a configuração dos Rubies.

existem mais alguns comandos úteis para a manipulação dos rubies instalados.

Para listar os rubies instalados

rvm list rubies
Para exibir o Ruby padrão
rvm list default
Para listar todos os Rubies conhecidos(Rubies que podem ser instalados)
rvm list know
Para saber aonde o ruby em uso está instalado digite
which ruby

Importante, dentro do RVM estarão instalados as várias versões do ruby, e provavelmente você estará usando uma delas, se quiser voltar à versão do ruby que está no sistema(fora do rvm) bastar mandar ele usar o system

rvm system
which ruby #para ver aonde está instalado
   /user/bin/ruby

Para usar a qualquer momento o ruby padrão

rvm default

Para Remover um Ruby instalado existem duas maneiras

rvm remove jruby(ree,etc)

Esta remove o ruby selecionado e todas as gems instaladas Dentro Dele, e tudo mais

rvm uninstall jruby(ree,etc)

Esta só remove o Ruby selecionado

Configurando o Terminal

Agora, quem quiser pode dar uma mexida no terminal para configurá-lo para mostrar a versão em uso do ruby e o brach do git, isso ajuda bastante, vai ficar algo +/ assim:

Para isso vamos ter que editar o arquivo bashrc , no terminal(como sempre :P) digite:

sudo gedit ~/.bashrc

E na última linha cole o seguinte trecho:

if [[ -s $HOME/.rvm/scripts/rvm ]] ; then source $HOME/.rvm/scripts/rvm fi export PS1='\[33[38m\]\u\[33[32m\] \w \[33[1;33m\]`~/.rvm/bin/rvm-prompt i v `\[33[0;31m\] `git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\ / `\[33[37m\]$\[33[00m\] '

Após isso Salve o arquivo e vai estar tudo certo, créditos ao Maurício de Amorim

Gem Set

Para cada ruby instalado, rvm cria um diretório vazio de gems, assim, quando você muda de ruby, você também muda as gems instaladas, tendo assim um controle sobre quais gems cada ruby vai utilizar.

Mas o melhor de tudo são as Gem Sets , que são conjunto de gems que você pode criar dentro de cada ruby para separar ainda mais as gems que irá usar, ou seja, independência total nos seus projetos.

Criando Gem Sets

Quando você instala um novo ruby, ele vem sem nenhum gem dentro, e você instala as gems que querer, mas quando cria uma nova Gem Set, novamente é criado um novo ambiente vázio de gems, usando quele ruby que você escolheu.

Para criar uma Gem Set é fácil

rvm gemset create nome_que_voce_quer_para_gem_sem

rvm gemset create rails_1_2_6 #exemplo

Alternando Entre Gem Sets

Após criar uma Gem Set, você precisa usa-la para isso digite:

rvm use rails_1_2_6

substitua o rails_1_2_6 pelo nome da gem que você criou, o mesmo comando server para alternar entre as gem sets que você tem criada. Se você não quiser usar mais nenhuma gem set, basta mudar para o ruby que você quer, o padrão por exemplo

rvm default

Um comando bem bacana para você saber quais gem sets tem instalado é :

rvm gemset list

Instalando Gems

Para instalar ar gems tanto dentro de gem sets como dentro dos rubies é normal(gem install nome da gem)

gem install rails -v1.2.6

No exemplo acima eu instalei o Rails 1.2.6, você deve estar se perguntando o porquê, sendo que o rails 3  teve seu lançamento hoje (29/08/2010), bom, a resposta é o livro: Desenvolvimento Ágil com Rails, do D.H.H.e D. Thomas, que é muito bom, e estou lendo :D.

Limpando Gem Set

Caso você queira limpar uma gem set, excluir todas as gem dela é bem simples, use:

rvm gemset empty rails_1_2_6

Excluindo Gem Sets

Para excluir uma gem Set também é simples:

rvm gemset delete rails_1_2_6

Bom Pessoal, esse é o Básico sobre RVM e  Gem Sets , espero que ajude a todos, quem quiser mais informações a Documentação no próprio Site é excelente http://rvm.beginrescueend.com/

Abraço a todos e até a próxima.


Ações

Information

2 responses

26 03 2011
edvan

Cara primeiramente valeu pelo artigo, mto bom mesmo! Em alguns casos eu consegui usar alterando algumas coisas e vendo o uso correto nas mensagens de erro. Como esse “rvm list know” , veja o Usage: , tem N no final..

edvan@edvan-linux:~$ rvm list know

Usage:

rvm list [action]

Actions:

{help,known,gemsets,default [string],rubies,strings,known_strings,ruby_svn_tags}

algumas coisas eu fui adaptando assim e funcionou de boa!

27 09 2010
maironbrasil

opa masssaaa

Boas Praticas Ruby on Rails


abraco

Deixar mensagem para edvan Cancelar resposta