ruby - Ruby 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 : [: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 中添加标签(注解:),我一戴上它,它就又开始工作了。我应该删除问题吗?
推荐阅读
- yfinance - 运行 yfinance 时出现以下错误
- javascript - 如何编写只允许“[a-z0-9]”唯一字符的正则表达式?
- sql - 如果 PostgreSQL 没有变化,事务是否记录到 WAL?
- python - ImportError:libGL.so.1:无法打开共享对象文件:没有这样的文件或目录 cv2
- python - 引发errors.InterfaceError(ERR_NO_RESULT_TO_FETCH)mysql.connector.errors.InterfaceError:没有要从中获取的结果集
- bash - 如何将结果附加到 shell 脚本中的列中
- javascript - javascript过滤器函数 - 回调函数问题
- java - 如何在android studio中共享tts和音频文件
- r - colnames() 不能在 dplyr 中使用
- javascript - 使用 UNCHECKED 复选框,如何过滤掉 NSFW 标记的 div 以始终隐藏,但在选中时,遵循可见性规则?