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

How to use Chef "search" method in library code (in module method)?

我在库代码中使用 "search" 方法时遇到问题: libraries/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.帮助(节点) 当我运行的时候,报错search method is not defined in Bcpc::Helper:Module

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

在这种情况下,如何在我的库代码中使用 Chef 提供的 "search" 方法? 谢谢!

你想要这样的东西。

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