【发布时间】:2019-01-16 11:16:59
【问题描述】:
我对 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
我发现 TBH 相当难以阅读。当我将以下 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 的精简版本(也失败了)
service:
container:
port: 3000
有什么想法吗?
【问题讨论】:
-
你是对的,它是不可读的。此外,这里似乎有太多令人分心的元素 - 我建议先清理代码,并提供最小的示例以及我们可以运行的代码,这样我们就可以帮助解决手头的实际问题(例如,似乎我们没有'这里不需要谈论 YAML,因为有问题的方法处理哈希)。
-
同意简化。一旦我这样做了,问题就很清楚了,而且它在 YAML 中。 (见答案)。我不确定这是否对其他人有帮助,所以不确定我是否应该删除整个问题(或者即使我可以这样做!?)