0

我正在查看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

当它将资源分配给安装变量时,它是否曾经执行过资源/提供者?也许它会立即执行它?而不是将编译和收敛的两阶段过程作为单独的阶段进行?

4

1 回答 1

2

它不会改变任何东西,DSL方法总是有一个返回值,通常你会忽略它,所以它会被丢弃。具体来说,每个 DSL 方法都返回编译后的资源对象,在这种情况下是ConsulInstallation类的实例。

在这种情况下使用它是因为我的一种模式用于对 Chef 资源进行依赖反转/注入。稍后您可以看到install.consul_program哪个正在执行反转命令查找,因为consul_installation资源具有多个在运行时可能会发生变化的底层提供程序。

于 2016-03-24T06:32:46.067 回答