我正在尝试创建一个下载文件和文件的厨师脚本。使用IO.read(下载的文件)将下载文件的内容传递给模板变量,该文件在内部下载多个文件。下载的文件有一个特定的格式,如文件名,url,校验和等。我需要根据第一个remote_file的数据在模板内再次使用remote_file。
由于远程文件不存在,我收到编译时错误
Errno::ENOENT
-------------
No such file or directory @ rb_sysopen - ....
有任何解决我的用例的建议吗?
答案 0 :(得分:1)
由于双遍模型,您需要将文件读取延迟到收敛时间。阅读https://coderanger.net/two-pass/,了解双程模型的详细信息。在这种情况下,您可能想要variables foo: lazy { IO.read('something') }
之类的东西(假设您正在运行Chef 13)。