Chef infra 有没有办法从另一个ruby_块调用一个ruby_块?

Chef infra 有没有办法从另一个ruby_块调用一个ruby_块?,chef-infra,Chef Infra,假设我有: ruby_块“foo”do 布洛克道 “做点什么” 结束 结束 ruby_块“bar”do 布洛克道 把“做点别的” 结束 结束 如何从fooblock调用bar?如果您想在Ruby中实现通用功能,应该编写库函数并从Ruby\u块调用它们 例如,您可以将其添加到库/helpers.rb: 模块手册 模块助手 德福 #做点什么 结束 def棒 #做点别的 结束 结束 结束 然后您可以在ruby_块中调用这些函数,如下所示: extend mycokbook::Helpers rub

假设我有:

ruby_块“foo”do
布洛克道
“做点什么”
结束
结束
ruby_块“bar”do
布洛克道
把“做点别的”
结束
结束

如何从
foo
block调用
bar

如果您想在Ruby中实现通用功能,应该编写库函数并从
Ruby\u块调用它们

例如,您可以将其添加到
库/helpers.rb

模块手册
模块助手
德福
#做点什么
结束
def棒
#做点别的
结束
结束
结束
然后您可以在
ruby_块中调用这些函数,如下所示:

extend mycokbook::Helpers
ruby_block“foo”do
布洛克道
福
结束
结束
ruby_块“bar”do
布洛克道
#调用foo-helper方法
福
#调用bar助手方法
酒吧
结束
结束

除了helper方法外,您还可以使用Chef's DSL中提供的方法来通知其他资源运行,包括其他
ruby_块
s。

如果您有要在ruby中实现的通用功能,您应该编写库函数,并从
ruby_块
s调用它们

例如,您可以将其添加到
库/helpers.rb

模块手册
模块助手
德福
#做点什么
结束
def棒
#做点别的
结束
结束
结束
然后您可以在
ruby_块中调用这些函数,如下所示:

extend mycokbook::Helpers
ruby_block“foo”do
布洛克道
福
结束
结束
ruby_块“bar”do
布洛克道
#调用foo-helper方法
福
#调用bar助手方法
酒吧
结束
结束
除了helper方法外,您还可以使用Chef's DSL中提供的方法通知其他资源运行,包括其他
ruby_block
s。

Holger的回答是“正确的做法”,但是如果您需要从一个资源内部调用另一个资源,您可以利用DSL方法的返回值

每个配方DSL方法(
文件
ruby_block
等)返回从DSL创建的对象的实例:

bar=ruby\u块“bar”do
# ...
结束
现在
bar
包含对由DSL方法创建的
Chef::Resource::RubyBlock
实例的引用。然后,您可以在另一个
ruby\u块中利用这一点:

ruby_block'foo'do
布洛克道
#在此上下文中,bar是RubyBlock资源,因此您可以调用任何操作
#或者改变你想要的任何属性。
结束
结束
霍尔格的答案是“正确的做法”,但如果需要从一个资源内部调用另一个资源,可以利用DSL方法的返回值

每个配方DSL方法(
文件
ruby_block
等)返回从DSL创建的对象的实例:

bar=ruby\u块“bar”do
# ...
结束
现在
bar
包含对由DSL方法创建的
Chef::Resource::RubyBlock
实例的引用。然后,您可以在另一个
ruby\u块中利用这一点:

ruby_block'foo'do
布洛克道
#在此上下文中,bar是RubyBlock资源,因此您可以调用任何操作
#或者改变你想要的任何属性。
结束
结束