Abstraindo.com

RSS Twitter Facebook

30
ago

Salve salve abstratos como vocês estão? Meu amigo Weverton já deu o chute inicial usando em um assunto que, já tem um tempo, estou querendo postar pra vocês, ele falou nesse e nesse post sobre Ruby on Rails, mas eu vou falar de algo mais voltado ao nosso ambiente de trabalho, o RVM!
Antes de mais nada, o que é RVM?

RVM significa Ruby Versions Manager, ou um gerenciador de versões Ruby. E daí você vira pra mim e pergunta: Pô Brunno, mas pra que eu vou precisar de gerenciador de versões para o Ruby?

E é aí que entra a resposta bacana: Meu amigo, o RVM não serve somente para gerenciar várias versões de Ruby, ele também server para criar conjuntos de gems específicas para cada um de seus projetos! Não é mágico?Agora vou explicar alguns conceitos básicos e depois vamos ao passo à passo de instalação.

Antes de tudo vamos entender os termos usados nesse tutorial.
Rubie – é uma versão do Ruby instalada em seu RVM;
Gemset – é como uma pasta de gems que pode ser atribuída a suas Rubies.

Agora que já sabemos o que são Rubies e o que são gemsets, podemos passar ao funcionamento do RVM, que é bem simples: você instala o RVM, depois instala uma versão do Ruby na RVM, em seguida cria uma gemset, instala as gems que você vai usar e só sair pro abraço.

Simples assim?!

É! Simples assim! :)

PASSO 1 – Instalação do RVM

Abra seu terminal e digite o seguinte comando mágico:

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

Siga as instruções e pronto, já instalamos o RVM, viu como é facil?

PASSO 2 – Instalação do Ruby

Agora com a RVM instalada, vamos instalar as versões do Ruby que desejamos, nesse exemplo vamos usar o Ruby 1.8.7, ainda no terminal digite:

rvm install 1.8.7

Ok, Ruby 1.8.7 instalado, agora vamos dar uma olhadinha básica no que temos em nossa RVM, digite esse comando:

rvm list

Você deverá ver algo assim:

rvm rubies

ruby-1.8.7-p352 [ x86_64 ]
ruby-1.9.2-p290 [ x86_64 ]

No meu exemplo, eu tenho a versão 1.8.7 e também a versão 1.9.2, então vamos aprender como alternar entre as Rubies instaladas em nosso sistema, digite:

rvm use 1.8.7

Agora você está usando sua versão 1.8.7, se você utilizar o comando gem list do Ruby você vai perceber que suas gems não estão mais aí, isso porque agora você está dentro da Rubie 1.8.7, que não tem nenhuma gem instalada ainda, você pode rodar o comando rvm list que irá listar novamente suas Rubies, porém agora com o marcador => mostrando qual Rubie você está usando no momento.

Agora vamos aprender a voltar para o Ruby do nosso sistema, digite o seguinte comando:

rvm use system

Ok, se você rodar seu gem list agora verá suas gems, mas esse é o Ruby do seu sistema, ele não tem nada a ver com as Rubies do RVM.

Agora que já sabemos alternar entre nossos ambientes Ruby e também sabemos verificar qual ambiente estamos usando no momento você já consegue trabalhar com várias versões do Ruby tranquilamente, além de poder instalar suas gems sem usar o comando de super usuário sudo, o que a galera do RVM acha que é um hábito ruim, porém se você quer mais, ou melhor, se você quer ir mais a fundo e descobrir as maravilhas de usar um conjunto de gems específico para cada um de seus projetos, basta ficar sentadinho aí e continuar lendo esse post! hehehehe

PASSO 3 – Criando uma Gemset

Ainda no terminal, vamos criar nossa primeira gemset, e vamos chamá-la de abstraindo, mas lembrem-se que uma gemset deve estar dentro de uma Rubie, então escolha uma de suas Rubies com o comando rvm use <versão da Rubie> e em seguida rode esse comando:

rvm gemset create abstraindo

Legal, já temos nossa gemset, vamos ver? Rode:

rvm gemset list

Demais! Melhor que criar nossa gemset é usá-la!! Então digite isso:

rvm gemset use abstraindo

Agora vocês já podem sair instalando suas gems nessa gemset e usá-la somente para seu projeto Abstraindo, e quando forem fazer outro projeto, criem outra gemset! Simples né?!

Eu costumo usar as gemsets usando um comando um pouco diferente, onde eu seto manualmente o Rubie e depois a gemset, eu uso esse maroto aqui:

rvm use 1.8.7@abstraindo

Bom galerinha esperta, como vocês já devem ter analisado, o comando que mostra em qual gemset estamos, é o rvm gemset list, com ele você vê onde está!

Esses são os comandos básicos para começarmos a utilizar o RVM e conseguir uma integridade de ambiente com projeto, alguns prontos podem ser ressaltados aqui:

  1. O RVM instala suas Rubies e gemsets em sua pasta de usuário, fazendo com que você consiga instalar as gems sem precisar rodar comandos com sudo;
  2. Cada Rubie e cada gemset tem sua pasta dentro de sua pasta de usuário, isso garante que uma lista não interfira na outra, portanto vale lembrar que ao instalar uma gem em uma Rubie/gemset essa mesma precisa ser instalada também em outra Rubie/gemset se você quiser utilizá-la em outro projeto;
  3. O comando mágico que mostra onde estão todas as informações de suas Rubies é: rvm info

Bom abstratos, por enquanto essas minhas dicas para o uso do RVM, é lógico que tem muita coisa ainda a aprender, como por exemplo exportar suas gems de um gemset para outro e várias outras coisas que podem ser encontradas aqui ou então postadas futuramente aqui no blog.

Grande abraço :)

, , , , , , , , ,

21:50 - 30 de agosto de 2011
  • Alvaro disse:
    23 de novembro de 2011 às 10:07

    Olá, sobre o RVM, várias pessoas usam o "V" como Versão, porem o rvm pode gerenciar várias instalações de ruby com a mesma versão
    (um exemplo é para separar gemsets na mesma versão de ruby, em projetos diferentes), logo o correto então é mesmo "enVironment". Será que é isso mesmo?

    RVM is the Ruby enVironment Manager (rvm). It manages Ruby application environments and switching between them. http://rubygems.org/gems/rvm

  • squiter disse:
    23 de novembro de 2011 às 10:25

    Alvaro achei sua observação super válida, principalmente por que eu também uso o RVM com varios gemsets apenas para isolar projetos, mas o pessoal usa o "V" como versão, pois oficialmente ele é o "V" de versão mesmo, como você pode ver aqui no site oficial http://beginrescueend.com/rvm/
    Porque na verdade, você não gerencia varias instalações da mesma versão do Ruby, e sim vários gemsets na mesma versão do Ruby.

    Grande abraço :)

  • @alemoreira disse:
    19 de fevereiro de 2012 às 10:55

    Bruno, parabéns pelo Blog. Simples e muito claro. Estou iniciando com Ruby e Rails e o seu post me clareou algumas coisas. Mas 2 perguntas.
    1. Se uso gemset por projeto, existe uma forma concreta de relacionar o gemset ao projeto? Tipo criar a gemset dentro do projeto rails? Ou sempre deverei lembrar qual a gemset que criei para o projeto e selecionar esta gemset antes de começar a usar o projeto ?
    2. Como o gemset é como um 'DIRETÓRIO' se eu levar o meu projeto de uma maquina para outra como faço para também levar a gemset ?

    Grande abraço! ^_^

  • Weverton Couto T. disse:
    19 de fevereiro de 2012 às 12:10

    Olá @alemoreira,

    Muito obrigado pelos elogios ao blog =), vamos responder as suas perguntas:

    1. Sim, existe, você pode criar um arquivo .rvmrc no diretório do projeto com o conteúdo:
    rvm 1.9.3@nomedoprojeto

    Assim, quando você acessar o diretório, seu gemset mudará automaticamente. Fizémos um post sobre isso, você pode ler em: http://www.abstraindo.com/programacao-2/utilizand

    2-) Eu não acho que isso seja necessário, normalmente nem o gemset é necessário já que o bundler já faz todo esse trabalho de lock nas gems. Tal que existe o rbenv (https://github.com/sstephenson/rbenv) que não trabalha com o gemsets, apenas com versões de ruby. Mas caso queira realmente fazer isso, você pode acessar o diretório físico das gemsets no seguinte path:

    ~/.rvm/gems/ruby-1.9.3-p0@meuprojeto/gems/

    Nesse diretório você encontrará todas as gems instaladas no gemset 'meuprojeto'.

    Qualquer dúvida, é só perguntar ;)

Deixe seu comentário




(*)campos obrigatórios.