在Rake中组合多个任务时清理任务

时间:2010-10-21 18:08:31

标签: ruby-on-rails ruby-on-rails-3 rake rakefile

我在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”执行...

1 个答案:

答案 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