有没有办法从另一个ruby_block调用一个ruby_block?

Ale*_*tov 0 chef-infra

比方说我有:

ruby_block "foo" do
  block do
     puts "do something"
  end
end

ruby_block "bar" do
  block do
    puts "do something else"
  end
end
Run Code Online (Sandbox Code Playgroud)

我怎么能叫barfoo块?

Hol*_*ust 5

如果你想在Ruby中实现通用功能,你应该编写库函数并从你的ruby_blocks中调用它们.

您可以将其添加到libraries/helpers.rb:

module MyCookbook
  module Helpers
    def foo
      # do something
    end

    def bar
      # do something else
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的ruby_blocks中调用这些函数:

extend MyCookbook::Helpers

ruby_block "foo" do
  block do
    foo
  end
end

ruby_block "bar" do
  block do
    # call the foo helper method
    foo
    # call the bar helper method
    bar
  end
end
Run Code Online (Sandbox Code Playgroud)

除了辅助方法,也可以使用通知这是在厨师的DSL通知其他资源来运行,包括其他可用ruby_block秒.