【问题标题】:Ruby yaml deep mergeRuby yaml 深度合并
【发布时间】: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 中。 (见答案)。我不确定这是否对其他人有帮助,所以不确定我是否应该删除整个问题(或者即使我可以这样做!?)

标签: ruby merge yaml


【解决方案1】:

好的,我发现了问题。我忘记在 YAML 中添加标签(注解:),我一戴上它,它就又开始工作了。我应该删除问题吗?

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 2021-03-13
    • 2021-04-18
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多