фонПочему моя задача Rake не работает должным образом при первом запуске?
У меня есть задача грабли называется prepare
обновить свой hosts.txt
файл на основе переменной окружения я поставил именно: rake spec environment=test
mule
задача считывает из переменной hosts
для того, чтобы запустить RSpec тесты ,
Rakefile
require 'rake'
require 'rspec/core/rake_task'
hosts = IO.readlines('./hosts.txt').sort!
task :spec => 'spec:prepare'
task :spec => 'spec:mule_esb'
namespace :spec do
task :prepare do
sh ("cd ../capistrano && cap OVS_#{ENV['environment']} admin:trigger_serverspec_hosts")
end
task :mule_esb => hosts
hosts.each do |host|
begin
desc "Run serverspec on #{host}"
RSpec::Core::RakeTask.new(host) do |t|
ENV['TARGET_HOST'] = host
puts "\u2630 #{host.upcase}"
# Write to file and stdout in documentation format
t.rspec_opts = '--out rspec_results.txt --format documentation'
t.pattern = "spec/mule_esb/*_spec.rb"
t.verbose = false
# Stop serverspec from early termination if it fails on a single host
# Exit code will always be zero
t.fail_on_error = false
end
rescue
end
end
end
Как вы можете видеть, что я заказал следующие задачи:
task :spec => 'spec:prepare'
task :spec => 'spec:mule_esb'
Наблюдение
Команда:
rake spec environment=test
prepare
задача выполняется успешно и обновляетhosts.txt
файл ноmule_esb
задание выполняется от хостов, установленных в рамках предыдущего запуска (когда среда былаstaging
)- Если я запустить его снова без каких-либо изменений, которые она успешно запускает его на
test
хостами среды
Выполнение задач по отдельности работает, как ожидалось
rake spec spec:prepare
, а затемrake spec:mule_esb
Я озадачен, почему это происходит. Я не так хорошо знаком с Рейком. Может кто-нибудь объяснить это поведение?
Попробуйте: 'environment = test rake spec'. Установите переменную Env перед задачей. –
@SergiiK: К сожалению, это тоже не сработало. – kaizenCoder