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