Chef Ruby 挖错了参数个数
Chef Ruby dig Wrong Number of Arguments
我正在尝试用 Chef/Ruby 做一些非常简单的事情。我想要做的就是以安全和干净的方式检查我的散列中的键是否 nil
。
这是我的代码:
if node.dig('k1', 'k2', 'k3').nil?
myvar1 = node['kA']['kB']['kC']
else
myvar1 = node['k1']['k2']['k3']
end
但是,我收到 Recipe Compile Error
说明:
ArgumentError
-------------
wrong number of arguments (given 1, expected 0)
我在这里做错了什么?我在这里阅读了 dig
的文档:http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig 但它似乎没有帮助
我正在使用 Ruby 2.3
我们没有将其添加到上方节点支持的 API 中,因为它与您要在此处使用的现有 node.read
方法重叠。它看起来像一个散列,但只支持方法的一个子集。
编辑:既然我不在移动设备上,您想要的完整代码可能是:
node.read('k1', 'k2', 'k3') || node.read('kA', 'kB', 'kC')
除非 false
是一个有效值。
原来 node
不是散列,而是节点对象,所以 .dig()
不起作用。我最终使用了以下内容:
if node.read('k1', 'k2', 'k3').nil?
myvar1 = node['kA']['kB']['kC']
else
myvar1 = node['k1']['k2']['k3']
end
我正在尝试用 Chef/Ruby 做一些非常简单的事情。我想要做的就是以安全和干净的方式检查我的散列中的键是否 nil
。
这是我的代码:
if node.dig('k1', 'k2', 'k3').nil?
myvar1 = node['kA']['kB']['kC']
else
myvar1 = node['k1']['k2']['k3']
end
但是,我收到 Recipe Compile Error
说明:
ArgumentError
-------------
wrong number of arguments (given 1, expected 0)
我在这里做错了什么?我在这里阅读了 dig
的文档:http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig 但它似乎没有帮助
我正在使用 Ruby 2.3
我们没有将其添加到上方节点支持的 API 中,因为它与您要在此处使用的现有 node.read
方法重叠。它看起来像一个散列,但只支持方法的一个子集。
编辑:既然我不在移动设备上,您想要的完整代码可能是:
node.read('k1', 'k2', 'k3') || node.read('kA', 'kB', 'kC')
除非 false
是一个有效值。
原来 node
不是散列,而是节点对象,所以 .dig()
不起作用。我最终使用了以下内容:
if node.read('k1', 'k2', 'k3').nil?
myvar1 = node['kA']['kB']['kC']
else
myvar1 = node['k1']['k2']['k3']
end