Falando sobre UNIX, Parte 14: Gerencie o Ruby e os gems com o RVM

Conheça o Ruby Version Manager

É necessário recriar outro ambiente de desenvolvimento do codificador Ruby? Está ansioso para testar com a versão mais recente do JRuby? Quer isolar seu trabalho em um conjunto específico de gems? É possível fazer tudo isso e muito mais com o útil e engenhoso Ruby Version Manager.

Martin Streicher, Conductor, Locomotive

Photo of Martin StreicherMartin Streicher é desenvolvedor profissional do Ruby. Ele já foi editor-chefe da Linux Magazine e contribuidor frequente do developerWorks. Martin possui mestrado em Ciência da Computação da Universidade de Purdue e programa sistemas parecidos com o UNIX desde 1986. Ele coleciona arte e brinquedos. É possível ler o blog de Martin e entrar em contato com ele através do email martin.streicher@locomotivellc.com.



10/Ago/2012

Embora o Internet Relay Chat, os fóruns e as ferramentas de controle de revisão como o Git e o Github tornem o desenvolvimento distribuído rápido, a reprodução de outro ambiente de desenvolvedor pode ser bastante irritante. Apoiar um grupo de códigos em uma nova máquina de desenvolvimento requer o alinhamento com pelo menos algumas, ou possivelmente todas as pilhas do codificador original , ou vários componentes de software obrigatórios que acionem o aplicativo. A pilha pode exigir um tipo de sistema operacional (digamos que seja UNIX ®, Linux®, Mac OS, ou Windows®); uma versão específica de sistema operacional (Ubuntu 10 ou 11? Mac OS X 10.6 Snow Leopard ou 10.7 Lion?), um acervo mínimo de bibliotecas do sistema integradas e suplementares e arquivos de cabeçalho, um cast de apoio de daemons e serviços (MySQL ou PostgreSQL?), e, claro, qualquer quantidade de recursos específicos por idioma, desde o compilador até um nível específico de reparo do código de software livre de apoio.

Na pior das hipóteses, uma parte do código é bloqueada ou fica dependente de uma revisão específica de cada camada da pilha— talvez até de um hardware específico. Em condições ideais, as normas e abstrações encontradas em toda a pilha facilitam a portabilidade. A conformidade da Interface de Sistema Operacional Portátil (POSIX) é um exemplo de padrão útil: Caso contrário, os sistemas divergentes que suportam as normas de POSIX fornecem as mesmas interfaces de software e produzem os mesmos resultados. Linguagens interpretadas como a do Ruby são abstrações aptas, pois a compilação é desnecessária e o código pode (de modo concebível) ser executado em qualquer plataforma que ofereça um interpretador.

Dito isso, mesmo o código do aplicativo escrito em linguagens interpretadas, como Perl, PHP e Ruby, requer certa adaptação a uma nova máquina. Na realidade, muitas vezes o Ruby requer bastante configuração, em grande parte porque o Ruby está em constante evolução, de modo rápido, e está sendo levado para mais, e mais variados, ambientes de informática. A saber, quando este texto foi escrito, havia duas versões de linguagem em uso, pelo menos cinco interpretadores Ruby com base em três linguagens diferentes de computador e várias versões de cada um desses interpretadores, sem falar nas dezenas de milhares de bibliotecas de terceiros:

  • A versão 1.8 do Ruby ainda está em uso, embora a versão 1.9 do Ruby seja preferida em esforços mais recentes de codificação.
  • O universo de interpretadores Ruby inclui o interpretador Ruby da Matz (MRI —escrito em C, cujo nome é uma homenagem ao criador do Ruby, o cientista da computação japonês Yukihiro Matz Matsumoto); JRuby (escrito na linguagem Java™ e acionado por uma Java Virtual Machine [JVM]); Rubinius (escrito em Ruby, executado sobre C++ uma máquina virtual bytecode [VM]); Ruby Enterprise Edition ([REE] uma bifurcação do código do Ruby, aprimorado para melhorar o desempenho e diminuir o consumo de memória); e MagLev (uma implementação de 64 bits rápida e estável do Ruby com base no GemStone/S 3.1 VM do VMware). (Consulte Recursos para obter os links.) Todos os interpretadores têm software livres. Cada interpretador tem suas vantagens e o tipo de solução a ser usada depende do aplicativo e das preferências do desenvolvedor.
  • De acordo com o RubyGems.org, repositório oficial do código do Ruby contribuído, há 41.780 instâncias gem disponíveis.

Para confundir ainda mais, nem todos os interpretadores Ruby são intercambiáveis. Embora a maioria das transferências de códigos entre implementações aconteça sem problemas, não há garantias (em todos os casos) de que um interpretador vá produzir resultados idênticos ao outro. Considerando-se tamanha variedade e a necessidade de comparar resultados, os desenvolvedores do Ruby precisam ter acesso fácil a várias pilhas, —semelhante à codificação dos desenvolvedores em C—mas manter ambientes de desenvolvimento do Ruby distintos não é diferente de distribuir dois C compiladores em seu computador. As variáveis do ambiente shell, incluindo PATH, GEM_PATH e GEM_HOME ajudam a segmentar um do outro, mas o delineamento correto, claro e consistente entre a primeira e a segunda pilha requer muito trabalho e uma disciplina rigorosa.

Agora os desenvolvedores do Ruby têm uma alternativa quase mágica : o Ruby Version Manager (RVM), criado por Wayne E. Seguin (consulte Recursos para obter um link).

Introduzindo o Ruby Version Manager

O RVM fornece vários recursos indispensáveis:

  • O RVM atualmente pode desenvolver mais de 35 implementações. Com um comando, o RVM faz download, desenvolve e instala qualquer um dos interpretadores Ruby.
  • Ele cria e gerencia qualquer quantidade de ambientes do Ruby, e cada ambiente oferece um interpretador Ruby individual. Portanto, um projeto pode usar JRuby e outro projeto, sendo desenvolvido no mesmo computador, pode especificar o MRI mais recente.
  • Além disso, cada ambiente pode ter qualquer quantidade de coleções distintas de gem. De forma apropriada, o RVM chama cada conjunto de um gemset. É possível chamar um gemset de auto_parts_store associado com o JRuby e um gemset completamente diferente denominado auto_parts_store associado com a versão 1.9.3 do MRI. Cada gemset deve ter um nome exclusivo no contexto de um interpretador.
  • A combinação de um interpretador e um gemset (fornecendo o mecanismo para executar o código Ruby e o grupo de códigos de biblioteca) é facilmente mencionada com a nota interpretador@gemset, em que interpretador é o nome de um interpretador conhecido e gemset é o nome de um gemset existente. Por exemplo, 1.8.7p302@acme refere-se ao nível de correção 302 do Ruby MRI para a versão 1.8.7 da linguagem e uma coleção de gems para o website Acme. O nome de um gemset é arbitrário. Os nomes de interpretadores individuais são fornecidos pelo RVM.
  • A alternância entre ambientes é fácil. É necessário digitar o comando a seguir: rvm interpretador@gemset.
  • Cada ambiente é autocontido e isolado (normalmente) em seu diretório inicial. Na verdade, o sistema RVM completo fica em seu diretório inicial, assegurando a impossibilidade de outro usuário sobrescrever ou corromper o que você reuniu e, de modo semelhante, você não pode corromper o que outros usuários reuniram. (Também é possível instalar o RVM de forma central, mas é uma prática pouco comum).
  • É possível executar o suíte de testes do aplicativo com relação a um, alguns ou todos os seus ambientes. Execute o MRI de forma local, mas use o REE em seu servidor. Use o RVM para testar o código com relação a ambos antes de realizar o push das revisões em tempo real.

O RVM permite que você tente combinações de código com rapidez, para poder manter o aplicativo estável e moderno. Se um novo MRI for liberado, é possível desenvolvê-lo no RVM, criar um novo ambiente, executar testes e se decidir pelo novo MRI se tudo correr bem.


Introdução

O RVM é simples de instalar. Requer apenas um comando e uma pequena mudança no script de inicialização do shell.

Porém, o RVM tem alguns pré-requisitos. Antes de continuar, verifique o seu sistema e certifique-se de que tem os utilitários bash , git, tar, curl, gunzip e o bunzip2 instalados localmente. Além disso, o seu sistema deve ter os pacotes Readline, IConv, zLib, OpenSSL e Autoconf para desenvolver interpretadores Ruby. É preciso ter o Bash shell para instalar o RVM, mas é possível usar o RVM com a versão 4.3.5 ou superior do Z Shell depois de instalar o RVM. git é necessário para atualizar automaticamente o RVM, e isso será explicado em breve.

Se o seu sistema está desprovido de todos os pacotes especificados, é possível instalá-los usando um gerenciador de pacotes, como o Advanced Packaging Tool para várias distribuições do Linux ou brew para Mac OS X. Também é necessário ter o compilador GNU C para desenvolver aplicativos.

Depois que o sistema estiver pronto, acesse a linha de comando do shell e digite (ou copie e cole) o comando:

$ bash < <(curl http://rvm.beginrescueend.com/releases/rvm-install-head)

Observação: Há um espaço entre os dois (<) sinais de menos. A sintaxe especial do Bash <(...) executa o comando entre parênteses e salva o resultado em um arquivo temporário. O primeiro < é o redirecionamento de entrada típico. Portanto, o comando executa o bash e fornece a entrada a partir de um arquivo temporário criado por curl. Pense na sequência como a execução de um shell script, apesar de estar armazenado em um servidor remoto.

O comando usa um git para clonar e criar uma instância local do RVM em seu diretório inicial. Examine o $HOME/.rvm: O subdiretório bin contém o próprio utilitário rvm ao passo que os rubies são o eventual início dos interpretadores Ruby. Você vai descobrir que o RVM organiza o software reunido em uma hierarquia previsível com base no tipo de interpretador, versão e gemset.

Depois que o script de instalação for concluído, é necessário editar o ponto ou os arquivos de inicialização do shell para carregar as funções de shell do RVM sempre que um novo shell for iniciado. Em geral, a linha:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

. . . deve ser a última linha no arquivo de ponto carregado sempre que um shell interativo for iniciado. Ao usar bash, anexe a linha ao final do arquivo $HOME/.bashrc. Para que as alterações entrem em vigor, você deve ativar um novo shell ou tipo source $HOME/.bashrc para recarregar p arquivo.


Selecione um Ruby, qualquer Ruby

Agora que o RVM está instalado, é hora de fazer o download, desenvolver e instalar um ou mais interpretadores Ruby. Há muitas variações disponíveis, contagem de versões de idioma, níveis da correção e implementações subjacente. É possível listar todas as variações conhecidas com a lista conhecida de rvm , como mostrado na Listagem 1.

Lista 1. Listando todas as variações conhecidas do interpretador Ruby
$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p352]
[ruby-]1.8.7-head
[ruby-]1.9.1-p378
[ruby-]1.9.1[-p431]
[ruby-]1.9.1-head
[ruby-]1.9.2-p180
[ruby-]1.9.2[-p290]
[ruby-]1.9.2-head
[ruby-]1.9.3-preview1
[ruby-]1.9.3-rc1
[ruby-]1.9.3[-p0]
[ruby-]1.9.3-head
ruby-head
                    
# GoRuby
goruby
                    
# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.6.1
jruby-1.6.2
jruby-1.6.3
jruby-1.6.4
jruby[-1.6.5]
jruby-head

# Rubinius
rbx-1.0.1
rbx-1.1.1
rbx-1.2.3
rbx-1.2.4
rbx[-head]
rbx-2.0.0pre

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2011.03]
ree-1.8.6-head
ree-1.8.7-head

# Kiji
kiji

# MagLev
maglev[-head]
maglev-1.0.0

# Mac OS X Snow Leopard Only
macruby[-0.10]
macruby-nightly
macruby-head

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

O nível da correção 352 MRI para o Ruby 1.8.7 fornece uma boa base para o desenvolvimento do Ruby e Rails. Primeiro, vamos instalá-lo.

Tipo rvm install e o nome do mecanismo, ruby-1.8.7-p352. Também é possível digitar rvm install 1.8.7. Partes dos nomes de interpretador que aparecem entre parênteses ([]) são opcionais, então rvm install 1.8.7 é o mesmo que rvm install ruby-1.8.7-p352. De modo geral, se você nomear uma versão, o RVM instala o código mais recente para aquela versão.

Ao instalar um interpretador, o RVM faz o download e cria o código para você. A Listagem 2 mostra o código.

Lista 2. Criando o interpretador
$ rvm install 1.8.7
Installing Ruby from source to: /Users/strike/.rvm/rubies/ruby-1.8.7-p352, this
may take a while depending on your cpu(s)...
ruby-1.8.7-p352 - #fetching
ruby-1.8.7-p352 - #downloading ruby-1.8.7-p352,
this may take a while depending on your connection...
ruby-1.8.7-p352 - #extracting ruby-1.8.7-p352 to /Users/strike/.rvm/src/ruby-1.8.7-p352
ruby-1.8.7-p352 - #extracted to /Users/strike/.rvm/src/ruby-1.8.7-p352
Applying patch 'stdout-rouge-fix'
located at /Users/strike/.rvm/patches/ruby/1.8.7/stdout-rouge-fix.patch)
ruby-1.8.7-p352 - #configuring
ruby-1.8.7-p352 - #compiling
ruby-1.8.7-p352 - #installing
Retrieving rubygems-1.8.10
Extracting rubygems-1.8.10 ...
Removing old Rubygems files...
Installing rubygems-1.8.10 for ruby-1.8.7-p352 ...
Installation of rubygems completed successfully.
ruby-1.8.7-p352 - ajustando #shebangs para (gem irb erb ri rdoc testrb rake).
ruby-1.8.7-p352 - #importing default gemsets (/Users/strike/.rvm/gemsets/)
Install of ruby-1.8.7-p352 - #complete

Para alternar para o interpretador 1.8.7 que acaba de ser instalado, digite rvm 1.8.7. Para listar as especificações de seu ambiente atual, digite rvm info. A Listagem 3 mostra o código.

Lista 3. Alternando para o interpretador 1.8.7
$ rvm 1.8.7
$ rvm info
rvm:
version:      "rvm 1.10.0-pre by Wayne E. Seguin
(wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]"
ruby:
interpreter:  "ruby"
version:      "1.8.7"
date:         "2011-06-30"
platform:     "i686-darwin11.2.0"
patchlevel:   "2011-06-30 patchlevel 352"
full_version: "ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin11.2.0]"
    
homes:
gem:          "/Users/strike/.rvm/gems/ruby-1.8.7-p352"
ruby:         "/Users/strike/.rvm/rubies/ruby-1.8.7-p352"
    
binaries:
ruby:         "/Users/strike/.rvm/rubies/ruby-1.8.7-p352/bin/ruby"
irb:          "/Users/strike/.rvm/rubies/ruby-1.8.7-p352/bin/irb"
gem:          "/Users/strike/.rvm/rubies/ruby-1.8.7-p352/bin/gem"
rake:         "/Users/strike/.rvm/gems/ruby-1.8.7-p352/bin/rake"
    
environment:
PATH:         "/Users/strike/.rvm/gems/ruby-1.8.7-p352/bin:
/Users/strike/.rvm/gems/ruby-1.8.7-p352@global/bin:
/Users/strike/.rvm/rubies/ruby-1.8.7-p352/bin:/Users/strike/.rvm/bin:
/Users/strike/.gem/ruby/1.8.7/bin:/Users/strike/.ruby_versions/ruby-1.8.7-p174/bin:
/Users/strike/bin/rds:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin"
GEM_HOME:     "/Users/strike/.rvm/gems/ruby-1.8.7-p352"
GEM_PATH:     "/Users/strike/.rvm/gems/ruby-1.8.7-p352:
/Users/strike/.rvm/gems/ruby-1.8.7-p352@global"
MY_RUBY_HOME: "/Users/strike/.rvm/rubies/ruby-1.8.7-p352"
IRBRC:        "/Users/strike/.rvm/rubies/ruby-1.8.7-p352/.irbrc"
RUBYOPT:      ""
gemset:       ""

As informações mais importantes estão nas linhas interpretador, versão, patchlevele gemset , que refletem o tipo, a versão do idioma e a revisão do interpretador, e o atual gemset, respectivamente. Se você alterar para um novo ambiente, por exemplo, para ree@auto_parts_store, as linhas vão mudar de acordo.Na verdade, a maioria das informações mostradas vai mudar toda vez que você alternar de ambiente. Novamente, o RVM automatiza o processo de alteração das configurações e variáveis do shell para criar uma ilha para cada ambiente do RVM. Note que o PATH foi alterado para apontar para o novo Ruby. Para confirmar, digite which ruby.

$  which ruby
/Users/strike/.rvm/rubies/ruby-1.8.7-p352/bin/ruby

Como é possível ver, o primeiro Ruby executável no caminho é o que acaba de ser instalado.

Para instalar um interpretador Ruby diferente, execute rvm install novamente especificando um nome diferente. Tipo rvm list a qualquer momento para descobrir os rubies que você instalou localmente.

$ rvm list
jruby-1.6.4 [ x86_64 ]
ree-1.8.7-2009.10 [ i686 ]
ree-1.8.7-2010.02 [ i686 ]
ruby-1.8.7-p334 [ i686 ]
=> ruby-1.8.7-p352 [ i686 ]
ruby-1.9.2-p0 [ x86_64 ]
ruby-1.9.2-p290 [ x86_64 ]

A seta no resultado indica o interpretador Ruby que está em uso.

De forma semelhante, se desejar saber os nomes de todos os gemsets definidos no atual ambiente, digite lista de gemset do rvm. Mais uma vez, a seta indica o atual gemset em uso.

$ rvm gemset list
gemsets para ruby-1.8.7-p352 (localizados em /Users/strike/.rvm/gems/ruby-1.8.7-p352)
brewster
canvas-src
global
=> miner
moms
tech

Destes gemsets, o denominado global é especial. Conforme explica Wayne Seguin, o "RVM fornece um gemset global por interpretador Ruby. Gems instalados para o gemset global de um determinado Ruby estão disponíveis para outros gemsets que você criar em associação com aquele Ruby. Essa é uma boa maneira de permitir que todos os seus projetos compartilhem o mesmo gem instalado para uma instalação específica de interpretador Ruby." Vamos analisar como criar, excluir, expandir e alternar para diferentes gemsets.


Gerenciando gemsets

O RVM permite que você alterne de um interpretador para outro. Agora é possível desenvolver um novo código com base nos recursos e na sintaxe da versão 1.9.2 do Ruby em um diretório e manter uma base mais antiga de código 1.8.7 em outro diretório, tudo no mesmo computador. É possível até executar uma única base de código em qualquer versão de sua escolha do Ruby.

A próxima etapa é gerenciar as dependências de biblioteca dos projetos usando gemsets independentes.

Para demonstrar isso, suponha que o diretório web-1.8.7 contém um aplicativo Rails baseado em Rails 3.1 e Ruby 1.8.7, enquanto o diretório daemon-1.9.2 é um sistema daemon escrito no Ruby, baseado na versão 1.9.2. (Não é necessário colocar o número da versão no nome do diretório; aqui tudo está claramente nomeado para evitar confusão). Dê a cada base de código o seu próprio gemset e explore como preencher cada um.

Para alternar para 1.8.7, digite rvm 1.8.7. Digite rvm gemset create web para criar um novo gemset denominado web, como mostra a Listagem 4 .

Lista 4. Criando e selecionando um gemset
$ cd web-1.8.7
$ rvm 1.8.7
$ rvm gemset criar web
$ lista de gemset do rvm
brewster
canvas-src
global
=> miner
moms
tech
web
$ rvm gemset usar web
$ rvm gemset list
brewster
canvas-src
global
miner
moms
tech
web
=> web
$ rvm info
ruby:
interpreter:  "ruby"
version:      "1.8.7"
...
patchlevel:   "2011-06-30 patchlevel 352"
...
gemset:       "web"

rvm gemset create fabrica um novo gemset, mas não o torna o gemset atual e ativo. Use rvm gemset use para alternar para um determinado gemset. É possível verificar ou confirmar o estado a qualquer momento usando as rvm info .

Depois que o novo gemset estiver ativo, qualquer comando que instalar gems afeta apenas aquele gemset. Por exemplo, o comando familiar gem install inclui uma lista de gems. Se um gemset estiver ativo, os gems não são instalados no cache de gem do sistema, mas sim no próprio cache do gemset, conforme mostrado na Listagem 5.

Lista 5. Instalando gems em um gemset
$ rvm gemset use style --create
$ gem list
$ gem install rails
Fetching: multi_json-1.0.4.gem (100%)
Fetching: activesupport-3.1.3.gem (100%)
Fetching: builder-3.0.0.gem (100%)
Fetching: i18n-0.6.0.gem (100%)
Fetching: activemodel-3.1.3.gem (100%)
...
Successfully installed rails-3.1.3
29 gems installed
$ gem list
    
*** LOCAL GEMS ***
    
actionmailer (3.1.3)
actionpack (3.1.3)
activemodel (3.1.3)
activerecord (3.1.3)
activeresource (3.1.3)
activesupport (3.1.3)
arel (2.2.1)
builder (3.0.0)
bundler (1.0.21)
erubis (2.7.0)
hike (1.2.1)
i18n (0.6.0)
json (1.6.3)
mail (2.3.0)
mime-types (1.17.2)
multi_json (1.0.4)
polyglot (0.3.3)
rack (1.3.5)
rack-cache (1.1)
rack-mount (0.8.3)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.1.3)
railties (3.1.3)
rake (0.8.7)
rdoc (3.12)
sprockets (2.0.3)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
tzinfo (0.3.31)

Para verificar se os gems estão isolados no gemset, alterne para outro gemset e execute novamente gem list. Alterne de volta e execute o comando novamente.

Similar ao comando gem , o comando bundler também instala gems, embora de um manifesto denominado Gemfile. Se executar bundler no contexto de um gemset, os gems são incluídos somente naquela coleção. Combine o RVM e bundler para alternar facilmente de um projeto Rails e para outro.

Caso seja necessário recriar um gemset partindo do zero, é possível apagar todo o conteúdo de uma só vez com o rvm gemset empty someset. Como o rvm empty é destrutivo e irreversível, o RVM solicita confirmação. Digite yes para continuar:

$ rvm gemset empty someset
WARN: Are you SURE you wish to remove the installed gems for
gemset 'ruby-1.8.7-p352@someset' (/Users/strike/.rvm/gems/ruby-1.8.7-p352@someset)?
(anything other than 'yes' will cancel) > yes
                
$ rvm gemset delete someset
WARN: Are you SURE you wish to remove the entire gemset
directory 'someset' (/Users/strike/.rvm/gems/ruby-1.8.7-p352@someset)?
(anything other than 'yes' will cancel) > yes

A linha: rvm gemset delete someset exclui o gemset someset inteiro. Isso também requer um prompt para continuar.

É possível encontrar uma lista completa de comandos do RVM digitando rvm help, ou consulte a documentação e as dicas localizadas no website do RVM.


Algumas dicas adicionais

O RVM é fácil de controlar, mas tem um conjunto de recursos amplo e profundo que transforma muitas tarefas de desenvolvimento em atividades rápidas. Aqui está apenas uma amostra dos gems encontrados no utilitário.

  • Em condições ideais, o sistema tem todos os utilitários e pacotes listados como pré-requisitos antes de tentar desenvolver um Ruby. No entanto, se não for possível instalar ou desenvolver nenhum desses pacotes, —digamos, porque você não tem privilégios suficientes para customizar seu computador—o RVM fornece uma alternativa. É possível instalar cada uma das cinco bibliotecas —Readline, IConv, zLib, OpenSSLe Autoconf—em seu próprio diretório $HOME/.rvm como uma cópia particular e usar o RVM como de costume.
  • O próprio RVM é revisado com frequência. É possível atualizar automaticamente o seu software de RVM usando o comando rvm get latest . O comando get latest atualiza o código local com a versão mais recente e estável do utilitário. Se quiser experimentar a vanguarda absoluta do RVM, digite rvm get head para instalar a revisão mais recente.
  • Caso crie gemsets com frequência, talvez você prefira um atalho para criar e usar o gemset em uma etapa. O comando rvm gemset use xyz --create cria o gemset xyz se não existir e alterna imediatamente para aquele gemset.
  • Caso use um ambiente específico para um projeto, é possível incluir um arquivo de ponto especial na raiz do projeto para alternar automaticamente para o ambiente sempre que você inserir o diretório do projeto. Basta criar um arquivo .rvmrc e escrever o comando do RVM que seria usado normalmente na linha de comando para alternar para o ambiente desejado. Por exemplo, se você colocar rvm ree@health no arquivo, o RVM configura automaticamente o interpretador e o gemset correto quando se altera o diretório para qualquer pasta do projeto.
  • Se você verificar o seu .rvmrc e o Gemfile no controle do código fonte, o próximo desenvolvedor que encontrar o seu trabalho pode restaurar rapidamente todos os requisitos necessários para continuar o desenvolvimento.

O RVM é o melhor amigo dos desenvolvedores do Ruby

O RVM certamente vai se tornar indispensável quase de imediato. O RVM pode provavelmente eliminar os VMs ou as pequenas fatias mantidas como ambientes de desenvolvimento adicionais ou alternativos do Ruby. Melhor ainda, à medida que o Ruby se desenvolve, é possível acompanhar com o RVM.

Recursos

Aprender

Obter produtos e tecnologias

  • É possível fazer o download do RVM e ler a documentação abrangente na página do projeto.
  • O Ruby é executado em diferentes interpretadores. O JRuby executa o Ruby dentro de um JVM; O Rubinius converte o Ruby em bytecode com o Ruby e executa aplicativos em um C++ VM. E o MagLev baseia-se no GemStone/S 3.1 VM do VMware.
  • Muitos desenvolvedores e projetos de software livre mantêm o código no controle de versão com o Git e o Github.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=829655
ArticleTitle=Falando sobre UNIX, Parte 14: Gerencie o Ruby e os gems com o RVM
publish-date=08102012