2016-05-31 8 views
0

背景私はrakeタスクは、私がすなわち設定した環境変数に基づいて、私のhosts.txtファイルを更新するprepareと呼ばれていRakeタスクが最初の実行で正常に動作しないのはなぜですか?

rake spec environment=testmuleタスクは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' 

観察

  1. コマンド:rake spec environment=test

    • prepareタスクが正常に実行され、hosts.txtファイル を更新しますがmule_esbタスクは(環境がstagingたとき) 前回の実行の一部として設定されたホストから実行
    • 私は正常に変更することなく、再びそれを、それを実行した場合個別に期待作品などのタスクを実行する
  2. test環境のホスト上で実行さ

    • rake spec spec:prepare、その後rake spec:mule_esb

私はこれが起こっている理由として困惑。私はレイクに精通した人ではありません - 誰かがこの行動を説明できますか?

+1

Try: '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 

終了を行うSPEC

をタスク名を持つ環境を指定します。

+0

それは私に意味をなさないが、私はとにかくそれを試して、次のエラー 'レイクを中止した! タスク '環境を構築する方法がわからない タスク:TOP => spec => spec:prepare' – kaizenCoder

関連する問題