我在rake中有一个使用以下依赖项定义的构建任务:
desc 'Builds the App'
task :rebuild_dev => ["solr:start", "db:drop", "db:create", "db:migrate", "spec", "solr:stop"]
第一个任务“solr:start”启动Solr Indexing服务器。现在,如果构建失败(可能在规范测试中失败),则不执行“solr:stop”任务。并且服务器没有停止。
是否有任何方法可以指定清理任务或始终运行的任务,即使其中一个从属任务失败?就我而言,要始终确保“solr:stop”执行...
答案 0 :(得分:7)
您只需要使用Ruby的保证系统
desc "Builds the App"
task :rebuild_dev do
begin
["solr:start", "db:drop", "db:create", "db:migrate", "spec"].each do |t|
Rake::Task[t].execute
end
ensure
Rake::Task["solr:stop"].execute
end
end