Ruby-yaml深合并

Ruby-yaml深合并,ruby,merge,yaml,Ruby,Merge,Yaml,我是Ruby的新手,我继承了一些代码,这些代码对一些YAML进行了“深度合并”。以下是相关部分:- class ::Hash def deep_merge(second) merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : Array === v1 && Array === v2 ? v1 | v2 : [:undefi

我是Ruby的新手,我继承了一些代码,这些代码对一些YAML进行了“深度合并”。以下是相关部分:-

class ::Hash
    def deep_merge(second)
        merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : Array === v1 && Array === v2 ? v1 | v2 : [:undefined, nil, :nil].include?(v2) ? v1 : v2 }
        self.merge(second.to_h, &merger)
    end
end
我觉得很难读懂。当我通过以下YAML时,它会掉落:-

- {key: nginx.ingress.kubernetes.io/auth-type, value: basic}
- {key: nginx.ingress.kubernetes.io/auth-secret, value: basic-auth}
- {key: nginx.ingress.kubernetes.io/auth-realm, value: 'Authentication Required.'}
在yaml输入中“-”都是缩进的,但这里的代码格式与此不符

下面是我试图合并的YAML的精简版本(也失败了)


有什么想法吗

好的,我发现了问题。我忘了给YAML添加标签(注解:),一旦我加上标签,它又开始工作了。我应该删除这个问题吗?

你说得对,它不可读。此外,这里似乎有太多分散注意力的元素-我建议首先清理代码,并提供一个我们可以运行的代码的最简单的示例,这样我们就可以帮助解决手头的实际问题(例如,似乎我们不需要在这里谈论YAML,因为所讨论的方法涉及哈希)。同意简化。一旦我这样做了,问题就变得很清楚了,问题就在YAML中。(见答案)。我不确定这是否对其他人有帮助,所以不确定我是否应该删除整个问题(或者即使我可以做到!)
service:
  container:
    port: 3000