2016-03-24 5 views
0

Я смотрю на johnbellone/consul-cookbook на GitHub и я вижу следующее:Что происходит, когда вы назначаете ресурс переменной в рецепте шеф-повара?

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 

Когда он присваивает ресурс переменной установить это когда-либо выполнить ресурс/поставщика? Может быть, он сразу же ее выполняет? Вместо того, чтобы делать двухфазный процесс компиляции и сближения в виде отдельных фаз?

ответ

2

Это ничего не меняет, всегда есть возвращаемое значение из методов DSL, как правило, вы игнорируете его, поэтому его отбрасывают. В частности, каждый метод DSL возвращает скомпилированный объект ресурса, в данном случае экземпляр класса ConsulInstallation.

Это используется в этом случае из-за моего рисунка для инверсии/инъекции зависимостей для ресурсов шеф-повара. Позже вы можете увидеть install.consul_program, который выполняет поиск команды инверсии, потому что ресурс consul_installation имеет несколько базовых поставщиков, которые могут меняться во время выполнения.