Escreva uma vez, execute (Ruby) em qualquer lugar

Como desenvolvedores Ruby, há momentos em que podemos precisar executar bits de código em vários tempos de execução Ruby.

Talvez você esteja interessado nas melhorias de desempenho em uma versão diferente do Ruby, ou talvez esteja tentando caçar uma regressão, ou talvez seja porque você está fazendo a dança de atualização de Rails 2 para Rails 3.

Se você tiver RVM disponível, há uma função integrada que ajuda com isso:

$ echo "puts ENV['RUBY_VERSION']" > script.rb
$ rvm
'1.9.2-p320, 1.9.3-p327' do ruby script.rb
ruby
-1.9.2-p320
ruby
-1.9.3-p327

Você pode tornar isso mais fácil adicionando a seguinte função bash ao seu ambiente.

function allruby() {
rvm
'1.9.2-p320@app, 1.9.3-p327@app' do ruby $@
}
export -f allruby

E agora você pode digitar:

$ allruby script.rb

O $ @ no final da função bash contém os parâmetros de linha de comando restantes, passando-os para seu programa Ruby.

$ echo 'puts "#{ENV['RUBY_VERSION']} says #{ARGV}"' > script.rb
$ allruby script
.rb hello world
ruby
-1.9.2-p320 says ["hello", "world"]
ruby
-1.9.3-p327 says ["hello", "world"]