Очистка задачи при объединении нескольких задач в 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 ответ

Решение

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