Очистка задачи при объединении нескольких задач в Rake - PullRequest
4 голосов
/ 21 октября 2010

У меня есть задача сборки в rake, определенная со следующими зависимостями:

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

Первая задача «solr: start» запускает сервер индексирования Solr.Теперь, если сборка не удалась (может быть, в спецификациях тесты не пройдены), задача «solr: stop» не выполняется.И сервер не остановлен.

Есть ли способ указать задачу очистки или задачу, которая всегда выполняется, даже если одна из зависимых задач завершается неудачей?В моем случае, всегда обеспечивать выполнение «solr: stop» ...

1 Ответ

7 голосов
/ 21 октября 2010

Вам просто нужно использовать систему обеспечения 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
...