配方编译错误 - Errno :: ENOENT - 没有这样的文件或目录@ rb_sysopen

时间:2017-06-28 20:33:40

标签: ruby chef

第一次与红宝石和厨师一起工作。我有以下代码,最后4行在标题中抛出错误:

#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

奇怪的是,如果我完全删除最后4行,那么xml.txt文件就可以了,这让我认为remote_file调用是异步的,不知怎的,我的开始结束块正在文件执行之前执行有时间下载。有没有办法在执行代码之前等待文件下载?

1 个答案:

答案 0 :(得分:2)

查看https://coderanger.net/two-pass/以获取完整说明,但是tl; dr Chef运行两次,并且在File.open运行时,remote_file资源只排队而不是实际排队做了什么。您没有在文件数据中提供足够的上下文来说明正确的解决方案,但有些内容在我的博客文章中列出。