Tecnologia a serviço do homem…

Múltipla convivência entre interpretadores Ruby diferentes.

Hoje estou trabalhando em um projeto interessante, cujo alguns módulos possuem interface gráfica escrita utilizando Rails( e mais umas abstrações num framework interno). Eu já vinha na minha tentativa de praticar o poliglotismo programático a fazer umas pequenas brincadeiras com Rails, utilizando o Ruby padrão, e eis que me deparei com o seguinte cenário: deveria utilizar o JRuby e não o interpretador Ruby padrão. Mas eu queria manter ambos em meu ambiente de desenvolvimento. Pensei comigo mesmo “tal qual o Java vou instalar um novo ‘Jdk’, configurar o JAVA_HOME’ e pronto, posso manter ambas convivendo”, até que alguém me disse: “ai é mais caro”.

Pois é, ao trabalhar com ambos Jruby e Ruby instalados juntos, a gestão dos gems gerava conflitos. Na verdade não eram conflitos, eu simplesmente queria utilizar JRuby, mas os gems instalados iam para o Ruby. A primeira solução, e a mais simples naquele instante, foi colocar no PATH  a pasta %JRUBY_HOME%/bin antes de referenciar %RUBY_HOME%/bin , solução análoga a instalações de Banco Oracle que colocavam uma JRE bem antiga como preferencial no PATH. Existia também a solução zero, eliminar o Ruby e manter apenas o JRuby, mas como eu adoro um desafio,  resolvi ir à diversão :)

Não satisfeito que sou, procurei uma solução mais elegante para permitir a dupla convivência de interpretadores diferentes. E eis que existe uma solução: o Ruby Version Manager (RVM) . Resumindo um pouco a ópera, com ele é possível instalar versões diferentes de Ruby, e determinar qual versão específica será utilizada, atualizar um único gem pra uma dada versão, ou pra todas as versões instaladas. Uma coisa muito legal é a possibilidade de testar uma mesma aplicação para várias versões de Ruby instaladas de uma só vez.  Para tal o comando é :

rvm tests

Se eu quiser limitar por uma versão específica:

rvm 1.8.6,1.8.7,1.9.1 tests

No meu caso o RVM só tem um probleminha, é pra ambientes Unix, conforme FAQ :( Mas o próprio FAQ dá  a solução de minha questão, o projeto pik.

O pik atua de forma análoga ao RVM, só que para Windows. A documentação dele é mais pobre, mas não é nada muito diferente do RVM. Para listar os interpretadores disponíveis, é só executar:

pik list

Esse comando trará a lista dos interpretadores, basicamente tal qual o exemplo abaixo:

161: jruby 1.6.1
*187 ruby 1.8.7

indicando que o padrão é o ruby 1.8.7, e não o jruby 1.6.1. Para utilizar o Jruby como padrão, é só executar o comando:

pik use 161.

Desta forma, apenas o JRuby será reconhecido  como interpretador. Hoje ainda não tenho a real necessidade de manter essa convivência dupla entre interpretadores(nem demanda pra isso),  mas quem disse que temos tempo pra pensar nessas coisas quando um cenário desse aparece? :)  Pensar sempre à frente pode/poderá ser seu maior trunfo para estes momentos….

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.