【发布时间】:2014-05-26 02:45:19
【问题描述】:
我正在尝试通过在帮助程序库中收集常见的 Ruby 逻辑来更好地组织一些 Chef 食谱。我已经看到在库中声明一个类(即类 Chef::Recipe::MyHelper)的示例,其中包含一些可重用的方法。我还看到了以类似方式使用模块的示例。就我而言,我想在其中一些方法中使用资源。
例如,假设我想提供一个辅助方法,该方法采用一组服务名称并循环使用服务资源停止每个服务名称。我想尽可能多地清理配方文件,并通过调用“stopServices(serviceList)”方法来保留一些逻辑。
如果我像这样定义帮助程序库:
class Chef::Recipe::MyHelper
def self.stopServices(serviceList)
serviceList.each do |svc|
service "#{svc}" do
action :stop
end
end
end
end
然后在我的食谱中我使用:
MyHelper.stopServices(serviceList)
我收到错误消息:“Chef::Recipe::MyHelper:Class 的未定义方法‘服务’”。
有没有一种简单的方法可以像这样使用库中的资源? (库是否包含 MyHelper 作为类或模块)?这只是我违反的一种不良做法吗?我做了很多搜索,找不到任何人问类似的问题,这让我相信我可能正在做一些我不应该做的事情,所以任何替代建议也将不胜感激。
【问题讨论】: