博客
返回博客文章
2024 年 3 月 21 日
2024 年 2 月 RubyGems 更新
作者 Gift Egwuenu
欢迎访问 RubyGems 月度更新!作为 Ruby Central 团队努力的一部分,我们将发布我们上个月完成的工作总结。继续阅读以了解 2 月份对 RubyGems 和 RubyGems.org 做出的更新。
RubyGems 新闻
本月,RubyGems 发布了 RubyGems 3.5.6 和 Bundler 2.5.6。这些更新包括增强功能,例如 改进 Gem::Specification
和 Gem::Requirement
规范中的深度复制要求 和 改善 gem 登录范围。这些努力是我们持续致力于改善 RubyGems 开发体验的一部分。
本月团队的另一项成就
- 此功能的目标是帮助创建独立工具的 gem rebuild 命令简化版,以便为现有 RubyGems 版本提供可重复的构建(因为 RubyGems 版本必须匹配构建才能正确再现)。该过程涉及将可重复的 gem 构建设置为默认值,并将
Gem.source_date_epoch
值包含到构建 gem 的元数据中。 - 此命令的基础工作涉及一个初步的重建脚本,以评估可重复性要求。特别感谢 @duckinator 在开发此功能方面的重大贡献。
在 2 月,RubyGems 获得了 97 个新提交,由 16 位作者做出贡献。在 120 个文件中共有 691 处新增和 329 处删除。
RubyGems.org 新闻
2 月对 RubyGems.org 的更新反映了对改善用户体验、增强安全性以及使平台现代化的坚定承诺。
以下是团队本月处理工作的重点
将 Rubygems.org 转换为 Importmap + Stimulus 控制器
- 添加 stimulus 控制器的目标是为开发人员提供一种现代、更快速、更简单的开发体验,并将我们带到最现代的 Rails 默认设置。
- 上个月,我们在 RubyGems.org 上引入了
importmaps
,以便进行预设,以便添加 Stimulus controllers。这需要首先为导入地图更改创建基础——第一阶段是在 迁移到propshaft
,使我们可以完全避免针对我们的资产使用 Node,但仍然可以使用和更新 JS 的 npm 软件包。第二阶段是为导入地图更改创建单独的 pull 请求。 - 现在,我们已开始实施更改,添加 API 密钥 Stimulus controller并对其进行改进,以方便开发者使用。
- 如果您有兴趣详细了解 Stimulus.js 及其最佳实践,可以在此处和此处找到更多信息。
改进 RubyGems Gems 页面的设计
- RubyGems 上的Gems 页面被评为该网站访问量最大的页面,作为工程师了解宝石重要细节的重要资源,包括其目的、许可信息、依赖项以及如何访问和安装宝石本身。了解这些页面在帮助访问工程师完成其任务方面的重要性,因此仔细研究其需求并确保页面结构和设计与其目标保持一致至关重要。
- 通过与 RubyGems 的高级用户和利益相关方的访谈和讨论,我们能够识别界面元素的基本价值,了解其开发背后的原因,跟踪其发展,并确定对我们更广泛的用户群最有利的下一步。未来,我们正在探索新的设计选项,以增强用户对这些页面的使用体验。
- 这对 RubyGems 开发者来说将是最相关的。该团队将能够将其用作一个游乐场,供我们最终向公众公示的功能使用,比如浏览宝石内容并能够进行查询。我们还能够将此用于安全研究,以评估特定更改对整个已发布宝石生态系统的影响。
- 此工具的创建涉及(并将继续涉及)大量调查、实验和步骤,比如从 Hetzner 租用专用服务器来托管宝石研究工具,因为反复耗尽磁盘空间!
开发纯粹的 Ruby Sigstore 实现
- 此项目的启动是为了一个长期目标,以便将其直接集成到 RubyGems 中。该团队从 Python 中现有的 Sigstore 和更新框架 (TUF) 实现中汲取灵感。
- 我们打算通过持续迭代专注于达到 sigstore 合规规范。此外,通过分析代码和分支覆盖率,我们正在识别需要更广泛测试的章节。
- 本项目中至关重要的一环是创建不依赖于原生扩展的
protobuf
实现,以确保可以将其无缝整合到 RubyGems 中。
2 月份,RubyGems.org 获得 13 位作者提交的 86 项新提交。共有 270 个文件中新增了 5,265 个内容,删除了 2,022 个内容。
感谢
感谢本月所有 RubyGems 和 RubyGems.org 的贡献者!我们非常感谢你们的贡献,并且感谢你们提供支持。
RubyGems 贡献者
- @nobu Nobuyoshi Nakada
- @martinemde Martin Emde
- @deivid-rodriguez David Rodríguez
- @VitaliySerov Vitaliy Serov
- @flavorjones Mike Dalessio
- @jgarber623 Jason Garber
- @kimesf Kim Emmanuel
- @hsbt Hiroshi Shibata
- @ccutrer Cody Cutrer
- @simi Josef Šimánek
- @mame Yusuke Endoh
- @segiddins Samuel Giddins
- @dduugg Douglas Eichelberger
- @indirect André Arko
RubyGems.org 贡献者
- @jenshenny Jenny Shen
- @martinemde Martin Emde
- @segiddins Samuel Giddins
- @hsbt Hiroshi Shibata
- @simi Josef Šimánek
- @colby-swandale Colby Swandale
- @sh0n0 sh0n0
- @coorasse Alessandro Rodi
- @CuddlyBunion341 Daniel Bengl
- @albertchae Albert Chae
- @bradly Bradly Feeley
- @ekyburz EtienneKyburz
- @indirect André Arko
访问 RubyGems 贡献指南,详细了解如何为 RubyGems 贡献。我们欢迎各种类型的贡献,包括修复 bug、实现功能、编写和更新文档以及故障分类。