你好,我在我的厨师菜谱中使用了下面的代码,它可以与所有其他现有服务器很好地兼容,但它不能很好地与我的新服务器兼容。
user_array = node
node['user']['user_array_node_attr'].split("/").each do |hash_key|
user_array = user_array.send(:[], hash_key)
end
并给出错误
FATAL: NoMethodError: undefined method 'split' for nil:NilClass
答案1
node['user']['user_array_node_attr']
未定义,但node['user']
确实存在。请检查您的属性规范以确保它有值。这个值来自哪里?
如果它来自另一个配方,您可能会遇到这种情况:您的 run_list 假设它在定义它的配方运行之前有一个值。这种情况可能会随着时间的推移而发生,因为配方会发生变化——先前的版本正确设置了属性并被替换,因此现有节点工作正常,但新节点会失败。