Ruby returns 尝试在厨师食谱中包含模块时出现未初始化常量错误
Ruby returns uninitialized constant error when trying to include a module within a chef recipe
我有一个 java/recipes/windows
配方,它使用一种名为 win_friendly_path
的方法,但它不起作用,因为 win_friendly_path
尚未定义。
win_friendly_path
然而在 ../windows/libraries/windows_helper.rb
中定义如下:
module Windows
module Helper
def win_friendly_path(path)
path.gsub(::File::SEPARATOR, ::File::ALT_SEPARATOR || '\') if path
end
我已经根据 windows
食谱在 java (./)
食谱中设置了 berksfile
和 metadata.rb
。
我不确定如何包含这个模块,所以现在我试图在 java/cookbook/windows
配方中使用 include WindowsHelper
并收到此错误:
uninitialized constant #<Class:#<Chef::Recipe:0x00000000029a2188>>::WindowsHelper
我已经尝试了几种变体,现在感觉我已经花了太多时间来解决这个问题,所以非常感谢您的帮助。
更新:将这一行 ::Chef::Resource.send(:include, Windows::Helper)
插入到我的 java/recipes/windows
食谱中会出现以下错误:
Chef::Exceptions::ValidationFailed
----------------------------------
value is a required property
试试这个
include Windows::Helper
插入以下行为我解决了这个问题:
::Chef::Recipe.send(:include, Windows::Helper)
这让我可以使用 windows 食谱中的以下模块的变量:
module Windows
module Helper
...
{Variable}
{Other_variable}
...
我有一个 java/recipes/windows
配方,它使用一种名为 win_friendly_path
的方法,但它不起作用,因为 win_friendly_path
尚未定义。
win_friendly_path
然而在 ../windows/libraries/windows_helper.rb
中定义如下:
module Windows
module Helper
def win_friendly_path(path)
path.gsub(::File::SEPARATOR, ::File::ALT_SEPARATOR || '\') if path
end
我已经根据 windows
食谱在 java (./)
食谱中设置了 berksfile
和 metadata.rb
。
我不确定如何包含这个模块,所以现在我试图在 java/cookbook/windows
配方中使用 include WindowsHelper
并收到此错误:
uninitialized constant #<Class:#<Chef::Recipe:0x00000000029a2188>>::WindowsHelper
我已经尝试了几种变体,现在感觉我已经花了太多时间来解决这个问题,所以非常感谢您的帮助。
更新:将这一行 ::Chef::Resource.send(:include, Windows::Helper)
插入到我的 java/recipes/windows
食谱中会出现以下错误:
Chef::Exceptions::ValidationFailed
----------------------------------
value is a required property
试试这个
include Windows::Helper
插入以下行为我解决了这个问题:
::Chef::Recipe.send(:include, Windows::Helper)
这让我可以使用 windows 食谱中的以下模块的变量:
module Windows
module Helper
...
{Variable}
{Other_variable}
...