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

如何向Rubygems.org推送gem?遇版本号冲突问题求解

解决Rubygems推送时"Canonical number has already been taken"报错的问题

问题原因

Rubygems对版本号做规范化处理,比如1.0.0和1.0会被识别为同一个"规范版本"。你搜不到webri gem,大概率是这个gem曾经存在过(比如作者删除了gem包,但版本记录仍在Rubygems的数据库里),导致1.0这个规范版本被占用,你的1.0.0自然无法推送。

解决步骤

  • 升级到全新版本号
    直接把版本号改成未被占用的规范版本,比如1.0.1或者2.0.0:

    1. 修改你的gemspec文件,把spec.version改成新的版本号,比如spec.version = "1.0.1"
    2. 删除本地和远程的旧标签(如果已经打了v1.0.0标签):
      git tag -d v1.0.0
      git push origin :v1.0.0
      
    3. 打新标签并推送:
      git tag v1.0.1
      git push origin v1.0.1
      
    4. 重新执行rake release
  • 确认gem名称状态(可选)
    可以用命令行查询gem的官方状态,避免搜索延迟的问题:

    curl https://rubygems.org/api/v1/gems/webri.json
    

    如果返回404,说明gem确实不存在,但版本冲突还是因为历史遗留记录,按上面的版本升级方案处理即可。

  • 更换gem名称(终极方案)
    如果升级版本还是不行,考虑给gem换个独特的名称,比如webri-core、webri-ruby,彻底避开历史版本的冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:12:04