【问题标题】:Chef recipe gives error as undefined method 'split'厨师食谱给出错误作为未定义的方法“拆分”
【发布时间】:2017-03-10 01:18:05
【问题描述】:

我在我的 Chef 食谱中使用此代码。它适用于所有其他现有服务器,但不适用于我的新服务器:

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

【问题讨论】:

    标签: ruby rubygems chef-recipe


    【解决方案1】:

    你没有任何价值

    node['user']['user_array_node_attr'] #=> nil
    

    您可以检查是否存在

    node['user']['user_array_node_attr'].present? && node['user']['user_array_node_attr'].split("/").each do |hash_key|
     user_array = user_array.send(:[], hash_key)
    end
    

    【讨论】:

    • 您可以消除.present?,它的工作原理几乎相同。实际上更好,因为 .present? 将在空字符串上评估为 false,并且在这里(我认为)您希望将其评估为 true 以在该实例中将空数组分配给 user_array
    • 如果['user_array_node_attr'] 不存在或返回nil,present? 仍然会导致相同的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多