4

次の依存関係で定義されたrakeのビルドタスクがあります。

desc 'Builds the App'
task :rebuild_dev => ["solr:start", "db:drop", "db:create", "db:migrate", "spec", "solr:stop"]

最初のタスク「solr:start」は、Solrインデックスサーバーを起動します。これで、ビルドが失敗した場合(スペックテストが失敗した場合)、「solr:stop」タスクは実行されません。そして、サーバーは停止していません。

クリーンアップタスクまたは依存タスクの1つが失敗した場合でも常に実行されるタスクを指定する方法はありますか?私の場合、常に「solr:stop」が実行されるようにするには...

4

1 に答える 1

7

Rubyのensureシステムを使用する必要があります

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
于 2010-10-21T19:00:56.080 に答える