我的厨师食谱开头的代码:
require "win32/service"
include Win32
导致以下错误:
No resource or method named `include' for `Chef::Recipe "install"'
这适用于红宝石,为什么它不适用于厨师食谱?
谢谢!
答案 0 :(得分:1)
以下代码可以使用(在没有include / require的配方中),
target_service = "FreeSSHDService"
if ::Win32::Service.exists?(target_service)
Chef::Log.info target_service + "Found!"
else
Chef::Log.info target_service + "NOT Found!"
end
leading ::告诉它不要查看Chef命名空间。
包含不起作用的原因,
在普通的非Chef Ruby中,您可以使用include语法在自己的类中包含其他类;例如,包括Opscode :: OpenSSL :: Password。但是,在配方中使用时,配方编译器将尝试为“包含”类型的资源查找提供程序,但它将失败。