You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby脚本生成K8s镜像JSON结构不符合预期问题排查

问题排查与修复方案

核心错误点

  • 初始结构选错:你把顶层结构初始成了数组([]),但预期输出是以namespace为键、服务列表为值的哈希对象,这是结构偏差的根源。
  • namespace添加方式错误:你直接把#{namespace}作为字符串塞进数组,而不是把它作为哈希的键,用来关联对应的服务数组。
  • 服务查找逻辑错误:原代码在混合了字符串和哈希的数组里找h['name'],完全不符合预期结构的查找逻辑——应该先定位到namespace对应的服务数组,再在这个数组里检查是否存在同名服务。

修正后的代码

old_versions_json = "{}" # 初始改为空哈希对象而非空数组
versions_hash = JSON.parse(old_versions_json)

# 确保当前namespace对应的服务数组存在,不存在则初始化空数组
versions_hash[namespace] ||= []

# 在当前namespace的服务数组内查找同名服务
c = versions_hash[namespace].find { |h| h['name'] == name }

if c.nil?
  puts("[WARNING] service #{name}:#{version} is not present in the configmap.  Adding it.")
  versions_hash[namespace].push({ "name" => name, "version" => version })
end

修正说明

  1. 把初始JSON从"[]"改为"{}",对应Ruby的哈希类型,匹配预期的顶层对象结构。
  2. 用versions_hash[namespace] ||= []自动初始化每个namespace的服务数组,避免后续操作出现空指针问题。
  3. 所有查找、添加操作都针对versions_hash[namespace]这个数组,完全贴合预期的嵌套结构。

内容的提问来源于stack exchange,提问作者Amey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:25:22