我正在查看github上的johnbellone/consul-cookbook,我看到以下内容:
install = consul_installation node['consul']['version'] do |r|
if node['consul']['installation']
node['consul']['installation'].each_pair { |k, v| r.send(k, v) }
end
end
当它将资源分配给安装变量时,是否会执行资源/提供程序?也许它马上执行它?而不是将两阶段的编译和融合过程分开进行?
答案 0 :(得分:2)
它不会改变任何东西,DSL方法总会有一个返回值,通常你会忽略它,所以它会被抛弃。具体来说,每个DSL方法都返回已编译的资源对象,在本例中为ConsulInstallation
类的实例。
这是在这种情况下使用的,因为我的模式用于为Chef资源进行依赖性反转/注入。稍后您可以看到install.consul_program
正在进行反转命令查找,因为consul_installation
资源有多个基础提供程序,这些提供程序在运行时可能会有所不同。