【问题标题】:chef undefined method `[]' for nil:NilClass with attributes用于 nil:NilClass 的厨师未定义方法 `[]' 具有属性
【发布时间】:2020-01-19 22:46:52
【问题描述】:

我正在研究厨师,我需要将属性值从attributes/default.rb 文件调用到recipe/default.rb 文件。 我在配方中调用了引发错误的属性值

nil:NilClass`的未定义方法[]

有人可以帮我解决这个问题吗?

# attribute/default.rb
default['app']['dir'] =  "/opt/app/"

# recipe/default.rb
ruby_block 'print_name' do
  block do
    puts "My app dir #{ node['app']['dir'] } "
  end
end

【问题讨论】:

  • 您复制并粘贴了这个吗?就您应该能够访问此属性而言,该代码看起来是正确的。失败表示node['app']nil 而不是Hash。
  • 我在配方文件中运行了该代码。但我仍然面临零类错误。有什么解决方案。如何解决?
  • 你能在 Github 或类似网站上分享代码吗?
  • 啊.. 属性目录的名称是什么?真的是你写的attribute/,还是预期的attributes/?注意尾随s
  • attributes/recipes/ 都需要复数形式。

标签: chef-infra


【解决方案1】:

您可以尝试像下面这样写来代替

输入“我的应用程序目录 #{ node['app']['dir'] }”


输入“我的应用程序目录#{ node.default['app']['dir'] }”

default['app']['dir'] = "/opt/app/" #这个用在attributes/default.rb中

这是优先事项。 node.overwrite > node.normal > node.default

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多