如果没有来自名为" frenchblog"的食谱中的食谱,我希望在我的食谱中有一个条件块。在该节点的运行列表中。
我找到了以下link:建议使用node.run_list.recipe?("frenchblog::default")
。只有这对于特定的食谱而不是整本食谱都有效,而且我找不到匹配的方法是针对正则表达式(如/frenchblog/
),因为它不是字符串而且我可以& #39; t将其转换为一个。
如何在食谱代码中测试食谱中是否存在食谱?无论如何将node.run_list
中的对象转换为字符串,以便将它们与正则表达式匹配?
答案 0 :(得分:0)
这是一个非常奇怪的请求,你很有可能做的事情不应该是:node["recipes"].any? {|r| r.start_with?("frenchblog") }
答案 1 :(得分:0)
node.run_list
方法返回一个数组,你可以使用所有ruby函数来过滤它并检查存在。
应该采取以下措施:
node.run_list.select { |entry| entry[/frenchblog::/] }.length == 0
这听起来像是一件非常奇怪的事情,并且在一天结束时它可能很脆弱。