我知道厨师的编译时间和运行时行为之间的区别,但仍然无法解决一般问题。 这就是我想要做的事情:
理想情况下,为了解决这个问题,如果我可以将其设为100%运行时代码会更好。 我可以将编译时代码放在 ruby_block 中以使其成为run_time 但是我不能在我的红宝石块中调用任何提供者。
我该如何处理这个问题?
更新
我尝试过一个简单的代码,证明Tensibai的建议有效:
我的食谱:
batch 'git_emulation' do
code "echo hi>C:\\temp\\x.txt"
action :nothing
end.run_action(:run)
::Dir["C:/temp/*"].each do |path|
app_go "test" do
path path
action :test
end
end
我的app_go提供商:
action :test do
Chef::Log.info("path = #{@new_resource.path}")
end
打印
path = C:\ temp \ x.txt
表示批处理提供程序在编译时运行。 但是,当使用git时,我收到一个错误:
STDERR:' git'不被视为内部或外部命令,
因为" include_recipe"不是在运行时运行。 有什么想法吗?