发布到 RubyGems
发布您的 Gem
发布到 RubyGems 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。
什么是 RubyGems.org
RubyGems.org 是发布和下载 Ruby 包的公共托管站点。当您运行 gem install 或 bundle install 时,工具默认会从那里获取软件包。
- 发布后,世界各地的用户都可以安装您的 Ruby 包。
- 每个 Ruby 包名称都是唯一的,并遵循先到先得原则。
- 某个版本一旦发布,就应将其视为永久版本。
创建账户
发布前,您需要一个免费的 RubyGems.org 账户。然后,您需要从命令行登录,这样 gem 工具才能验证上传身份。凭据会保存在本地,供以后推送使用。
发布前检查清单
发布前,请确认:
- 版本号已提升。
- 测试已通过。
- 变更日志已更新。
- 包规格文件列出了所有文件,并指定了正确的许可证。
花几分钟检查,就能避免发布一个损坏的公共版本。
checklist = ["version bumped", "tests pass", "changelog updated", "gemspec valid"]
checklist.each { |item| puts "[ ] " + item }构建软件包
运行 gem build mygem.gemspec。该命令会读取 gemspec,并生成一个类似 mygem-0.1.0.gem 的文件,其中包含您的代码和元数据。这就是将要上传的确切构件。
在本地测试构建结果
使用 gem install ./mygem-0.1.0.gem 将构建出的文件安装到干净的环境中,并尝试加载它。这样可以在它被全世界看到之前,发现缺少的文件或加载错误。
推送到 RubyGems
使用 gem push mygem-0.1.0.gem 发布。几秒钟内,该版本就会出现在 RubyGems.org 上,任何人都可以安装它。该命令会使用您保存的凭据来授权上传。
使用任务运行器发布
通过依赖管理器搭建的软件包包含一个 rake release 任务。它会为版本创建版本标签、构建软件包并将其推送出去,一步完成,因此版本标签和已发布的版本始终保持一致。
无法重新推送同一版本
1.0.0 发布后,您无法用不同的代码覆盖它。要修复问题,必须发布一个新版本,例如 1.0.1。这样可以保证对于每位用户来说,给定版本始终对应完全相同的字节内容。
published = "1.0.0"
fix = "1.0.1"
puts "Cannot overwrite " + published
puts "Publish " + fix + " instead"撤下有问题的版本
如果某个版本存在问题或不安全,gem yank mygem -v 1.0.1 会将其从新安装中移除。现有的锁定文件可能仍然引用该版本,因此撤下是最后的手段,而不是撤销按钮。
保护您的账户
保护您的软件包,防止遭到劫持:
- 在 RubyGems.org 上启用多重身份验证。
- 使用权限受限的作用域 API 密钥。
- 使用
gem owner添加可信的共同所有者,以便即使您不再维护,该软件包也能继续存在。
发布之后
上线后,请在您的 README 中分享安装说明,发布版本公告,并留意问题反馈。通过发布修补版本来回应错误报告。持续维护的软件包会随着时间建立信任并获得更多使用者。
快速检查
测试您对发布流程的理解。
回顾:发布到 RubyGems
您学习了发布流程:
- 创建账户并登录。
- 运行发布前检查清单,然后执行
gem build。 - 先在本地测试,然后执行
gem push(或rake release)。 - 版本是永久的;将修复内容作为新版本发布,或使用
gem yank。 - 使用 MFA 和共同所有者保护您的账户。
至此,您已完成“构建您自己的 Ruby Gem”课程。
常见问题解答
「发布到 RubyGems」课时是免费的吗?
是的 — 「发布到 RubyGems」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。
「发布到 RubyGems」这节课中我会学到什么?
发布您的 Gem 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ruby Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「发布到 RubyGems」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ruby Academy 课中编写并运行代码吗?
能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。