是否可以从厨师模板中调用库函数? 我知道我们可以将它作为变量传递,但我的要求是迭代模板文件中的列表可以为每个列表元素调用函数。
/libraries/default.rb
module Common
module Helper
def test_fun(receiver)
if receiver['bla_bla']
return <something meaningful>
end
/templates/default.rb
<% Chef::Resource::User.send(:include, Common::Helper) -%>
<% node['receivers'].each do |receiver| -%>
<% test_fun([receiver]) -%>
<% end -%>
答案 0 :(得分:2)
删除模板中的第一行(include
位)并将extend self
添加到帮助程序模块的顶部,并将其称为Common::Helper.test_fun(whatever)
。