2017-06-28 12 views
0

ruby​​とchefで初めて作業しています。私は、最後の4行がタイトルにエラーを次のコードを投げている:私は私がいることを考えさせるれ、完全にxml.txtファイルが細かい作成された最後の4行を削除する場合は奇妙な何レシピコンパイルエラー - Errno :: ENOENT - このようなファイルやディレクトリはありません@ rb_sysopen

#call bamboo REST to get latest build number, save xml data as xml.txt 
remote_file 'D:/git/chef/cookbooks/java-8-upgrade/xml.txt' do 
    source 'http://REST-API-URL' 
    #enter login credentials for bamboo 
    headers("Authorization"=>"BasiC#{ Base64.encode64("username:password").gsub("\n", "") }") 
    action :create  
end 

begin 
file = File.open("D:/git/chef/cookbooks/java-8-upgrade/xml.txt", 'rb') 
contents = file.read 
end 

がありますremote_file呼び出しは非同期で、ファイルがダウンロードされる前に何らかの形で私のbegin-endブロックが実行されています。コードを実行する前にファイルがダウンロードされるまで待つ方法はありますか?

答えて

1

完全な説明のためにチェックアウトhttps://coderanger.net/two-pass/が、TL; DRシェフは、2回のパスでとFile.openランは、remote_fileリソースのみがキューに入れられると、実際にはまだ何もしていないことを一度に実行されます。ファイルのデータを使って何が正しいのかを説明するのに十分な文脈はここにはありませんが、いくつかは私のブログの記事で概説されています。

+0

これは完璧です、ありがとうございます –

関連する問題