Testar vários motores Rails locais juntos

Se você estiver usando vários engines Rails para desenvolver um aplicativo modular complexo, pode ser irritante executar seus testes.

Mantemos nossos motores locais sob o diretório lib para que o Code Climate os veja e analise.

lib/engines/engine1
lib
/engines/engine2
lib
/engines/engine3

Adicionamos uma tarefa rake para ajudar a executar testes em todos eles.

# lib/tasks/test.rake
namespace
:test do

desc
"Tests engines under lib/engines"
task
:engines, [:engine] => [:environment] do |t, args|
puts
"Testing engines".ljust(80, ".")
paths
= Dir.glob(File.join(Rails.root, "lib/engines/*"))

paths
.each do |path|
next unless path.split("/").last == args[:engine] if args[:engine]
commands
= []
commands
<< "cd #{path}"
commands
<< "bundle exec rake"
command
= commands.join("; ")
puts
"n#{command}nn"
exit
1 unless system(command)
end

exit
0
end

end

Isso nos permite testar nossos motores dessa forma.

rake test:engines
rake test
:engines[engine1]