2016-05-31 10 views
0

фонПочему моя задача 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' 

Наблюдение

  1. Команда: rake spec environment=test

    • prepare задача выполняется успешно и обновляет hosts.txt файл но mule_esb задание выполняется от хостов, установленных в рамках предыдущего запуска (когда среда была staging)
    • Если я запустить его снова без каких-либо изменений, которые она успешно запускает его на test хостами среды
  2. Выполнение задач по отдельности работает, как ожидалось

    • rake spec spec:prepare, а затем rake spec:mule_esb

Я озадачен, почему это происходит. Я не так хорошо знаком с Рейком. Может кто-нибудь объяснить это поведение?

+1

Попробуйте: 'environment = test rake spec'. Установите переменную Env перед задачей. –

+0

@SergiiK: К сожалению, это тоже не сработало. – kaizenCoder

ответ

0

ли это

имен: особое_разрешение сделать

task prepare: :environment do 

    sh ("cd ../capistrano && cap OVS_#{ENV['environment']} proteus:trigger_serverspec_hosts") 

end 

КОНЕЦ

УКАЗАТЬ среды с именем задачи.

+0

Это не имеет смысла для меня, но я все равно попробовал и получил следующую ошибку: «rake aborted! Не знаю, как создать задачу «среда» Задачи: TOP => spec => spec: подготовить' – kaizenCoder

 Смежные вопросы

  • Нет связанных вопросов^_^