如何使用Chef" search"库代码中的方法(在模块方法中)?

时间:2015-01-12 21:07:29

标签: chef

我遇到了在库代码中使用“搜索”方法的问题: 库/ helpers.rb

Bcpc
  Helper
    extend self
    def help(node=node)
      search(:node, "....")
    end
  end
end
Chef::Recipe.send(:include, Bcpc::Helper)

Chef :: Resource.send(:include,Bcpc :: Helper),用于使用模块方法的食谱。

然后在这样的食谱中使用此模块方法: BCPC :: Helper.help(节点) 当我运行它时,它会报告在Bcpc :: Helper:Module

中未定义搜索方法的错误

我发现搜索方法是在Chef :: Search :: Query类中定义的。然后我尝试在我的库代码中使用搜索的全名,例如:Chef :: Search :: Query.search(:node,“....”)。 但它报告在Chef :: Search :: Query中未定义搜索。 此搜索方法是否应该是可以使用其类名调用的静态方法?

在这种情况下,如何在库代码中使用Chef提供的“搜索”方法? 谢谢!

1 个答案:

答案 0 :(得分:9)

你想要这样的东西。

Chef::Search::Query.new.search(:node, 'foo:bar') do |n|
  # something with n
end