首页 > 解决方案 > 尝试在厨师食谱中包含模块时,Ruby 返回未初始化的常量错误

问题描述

我有一个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

我已经在食谱中设置了我的berksfilemetadata.rb设置,java (./)以依赖于windows食谱。

我不确定如何包含这个模块,所以现在我试图include WindowsHelperjava/cookbook/windows配方中使用并收到这个错误:

uninitialized constant #<Class:#<Chef::Recipe:0x00000000029a2188>>::WindowsHelper

我已经尝试了几种变体,现在觉得我花了太多时间来解决问题,所以感谢任何帮助。

更新:将此行插入::Chef::Resource.send(:include, Windows::Helper)java/recipes/windows的食谱会给我以下错误:

Chef::Exceptions::ValidationFailed
       ----------------------------------
       value is a required property

标签: rubychef-infratest-kitchen

解决方案


尝试这个

include Windows::Helper

推荐阅读