Testando seu código em várias versões de dependência

ATUALIZAÇÃO 1: Se você, como nós, tem uma gem pública, existe a possibilidade de usar o Travis CI para verificação em várias versões de Rails e Rubies.

ATUALIZAÇÃO 2: deve-se usar o comando DO do RVM https://rvm.io/set/do/

Preciso verificar se o Brazilian Rails funciona em várias versões do Rails, 2.3.x, 3.0.x, 3.1.x e 3.2.x e Ruby 1.8.7 e 1.9.x. Como faz?

Com RVM, seria:

$ rvm 1.8.7@rails23x,1.8.7@rails30x,1.8.7@rails31x,1.8.7@rails32x,[até],1.9.3@rails32x do rake

Claro, existe um script automatizando isto, mas ainda sim é feio d+.

Uma solução, seria usar o infinity_test, mas o Brazilian Rails tem testes em TestUnit e também em RSpec e como o infity_test é para execução em apenas um “ambiente”, não sei se irá funcionar (não testei)

Outra é usar o Appraisal, que se integra com o Bundler e Rake, o que fica bastante flexível.

Seguindo os passos conforme indicado no README do projeto, no meu ambiente fico com apenas um gemset por versão de Ruby.

$ rvm 1.8.7@brazilianrails,1.9.1@brazilianrails,1.9.2@brazilianrails,1.9.3@brazilianrails do rake test_spec

Para quem não separa as instalações por gemset, usando apenas o default, fica ainda mais limpo.

$ rvm 1.8.7,1.9.1,1.9.2,1.9.3 do rake test_spec

E se seguir a sugestão de David Czarneck, basta criar uma tarefa Rake,

1
2
3
4
5
6
7
8
9
10
11
# Rakefile
desc "Ruby test units and RSpec"
task :test_spec do
  Rake::Task.execute["test"]
  Rake::Task.execute["spec"]
end

desc "Runs tests on Ruby 1.8.7 and 1.9.2"
task :test_all do
  system "rvm 1.8.7@brazilianrails,1.9.1@brazilianrails,1.9.2@brazilianrails,1.9.3@brazilianrails do rake test_spec"
end

e executar:

$ rake test_all

Referências: