背景私はrakeタスクは、私がすなわち設定した環境変数に基づいて、私のhosts.txt
ファイルを更新するprepare
と呼ばれていRakeタスクが最初の実行で正常に動作しないのはなぜですか?
:rake spec environment=test
mule
タスクはRSpecのテストを実行するためにhosts
変数から読み込む
。
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
私はこれが起こっている理由として困惑。私はレイクに精通した人ではありません - 誰かがこの行動を説明できますか?
Try: 'environment = test rake spec'です。タスクの前にEnv変数を設定します。 –
@SergiiK:残念ながら、それはどちらもうまくいきませんでした。 – kaizenCoder