Chef infra 为什么可以';我的厨师食谱中不包括Win32吗?

Chef infra 为什么可以';我的厨师食谱中不包括Win32吗?,chef-infra,Chef Infra,以下代码位于我的厨师食谱的开头: require "win32/service" include Win32 导致以下错误: No resource or method named `include' for `Chef::Recipe "install"' 这在ruby中有效,为什么在厨师食谱中不起作用 谢谢 以下代码将起作用(在没有包含/要求的配方中) target\u service=“freeshdservice” 如果::Win32::服务存在?(目标服务) 厨师长::Log.in

以下代码位于我的厨师食谱的开头:

require "win32/service"
include Win32
导致以下错误:

No resource or method named `include' for `Chef::Recipe "install"'
这在ruby中有效,为什么在厨师食谱中不起作用

谢谢

以下代码将起作用(在没有包含/要求的配方中)

target\u service=“freeshdservice”
如果::Win32::服务存在?(目标服务)
厨师长::Log.info目标_服务+“已找到!”
其他的
厨师长::Log.info目标_服务+“未找到!”
结束

前导::告诉它不要查看Chef名称空间

包括不工作的原因,


在普通的非Chef Ruby中,您可以使用include语法在自己的类中包含其他类;例如,包括Opscode::OpenSSL::Password。但是,在配方中使用时,配方编译器将尝试为“include”类型的资源查找提供程序,但将失败。

因为配方不是纯Ruby。这只是一个看起来非常像Ruby的DSL,如果你想编写纯Ruby——在库中或Ruby_块中编写——总之,真正的问题是你想在食谱中做什么?如果没有更多的投入,就很难给出解决问题的建议。