博客
2024 年 2 月 17 日
2024 年 1 月 RubyGems 更新
欢迎来到 RubyGems 月度更新!作为我们在 Ruby Central 所做努力的一部分,我们发布了上个月所做工作的回顾。继续阅读以了解 1 月份对 RubyGems 和 RubyGems.org 所做的更新。
RubyGems 新闻
1 月份,我们在 RubyGems 中发布了 RubyGems 3.5.5 和 Bundler 2.5.5。这些版本包含以下修复程序:缓存特定目录、开发依赖关系的疏忽以及紧凑索引请求标头格式,作为我们不断改善 Ruby 开发体验的一部分。
本月团队的一些其他重要成果包括
-
修复与 Importmaps 相关的
rack-test
中的 bug在importmaps(一种利用 HTTP2 呈现 JavaScript 的现代方法)的开发工作期间,发现了 rack-test 中的一个 bug。当初始化会话以确保第一个响应的
session_id
时,该 bug 会表现为测试失败。详细的调试发现了处理多个 cookie 的问题,特别是导致崩溃和测试失败的空白 cookie。解决方案涉及修复 cookie 的处理方式。 - (#343)。 -
修复 Bundler 与 Renovatebot 的问题
@deivid-rodriguez 解决了一个特定的 Bundler 解析问题,该问题影响了 Renovatebot 的操作。我们尝试与更新机器人友好,因为它们有助于打造更健康、更安全的生态系统。特别是 Renovate 似乎不使用 Bundler 内部,而是直接通过定义良好的 CLI 标志运行 Bundler。这对我们非常有利,因此很好地回馈并确保他们使用的 CLI 标志按预期工作。
问题发生在 Renovatebot 首先更改 Gemfile 然后运行
bundle lock –update –patch –strict
时。他首先调查了解决方案,涉及更新 lockfile,但最终意识到这种方法会违反--patch --strict
合约,因为它可能导致该修补程序级别版本升级。最后,他决定视当前行为为预期行为,并将重点放在未来改进错误消息上。- (7369)。 -
解决 RubyGems 要求问题
@deivid-rodriguez 解决了一个与 RubyGems 内部的自定义要求实现相关的难题。默认 gem 的 gem 化,特别是那些带有依赖项的 gem,在 Ruby 3.3 发布后发现了问题,影响了用户体验。该修复程序确保 RubyGems
require
绕过激活默认的 gem 版本(在容易发生冲突的条件下)。有关详细信息,请参阅 #7379。 -
努力在 RubyGems 中销售 URI
此举是平滑从
ruby-core
中提取默认 gem 的工作的一部分,以确保平稳过渡。URI 成功销售标志着缓解激活冲突迈出的重要一步。可在 #7386 中找到此更新的信息。 -
解决 RubyGems 中的 ENV 重置问题
将与 Bundler 相关的 ENV 变量恢复为空,可防止我们的一个用户 Edouard-chin 指出的尝试从子进程调用 Bundler 时的下游问题。调查导致确定了与特殊情况为空的 ENV 变量相关的错误。决定是移除此异常并进行修复。其含义在 #7383 中详细说明。
-
引入 Gem 重建命令
Ellen Dash 正在领导开发 gem 重建命令以促进可重现的构建。可重现的构建让人们能够识别问题,例如受损的构建环境或不使用已发布源代码的构建。几年来,如果您对原始构建环境有足够的了解,那么在技术上可以重现构建。
gem rebuild
命令的目的是尽可能实现这一目标的自动化。
1 月份,RubyGems 获得了 18 位作者提交的 163 次新提交。244 个文件共增加了 6,051 行,删除了 1,059 行。
RubyGems.org 新闻
RubyGems.org 一月份的更新反映了致力于改善用户体验、加强安全性和实现平台现代化的坚定承诺。
以下是要点总结了团队本月的工作
-
审计/事件日志记录,以增强安全监控
我们在其帐户上推出了已发生的事件的用户可见安全日志。这将有助于维护人员掌握其帐户的使用方式以及在其所拥有 Gem 中发生的事件,从而减少意外行为的平均修复时间。通过提供一个可以在安全事件响应中遵循的线索,这还对 RubyGems.org 安全团队有所帮助。
现在记录了登录、密码更改、电子邮件更新、API 令牌生成和撤销以及 Ruby Gem 所有权更改等关键事件。这些日志对于帐户活动来说是特定于用户的,而与 Gem 相关的事件则所有相关 Gem 的所有者都可以访问。查看 (#4367) 以了解更多信息。
-
解决密码重置漏洞中的多重身份验证 (MFA) 绕过问题
来自 HackerOne 的漏洞报告使我们注意到了密码重置期间 MFA 过程中的一个严重缺陷。这个问题得到了解决,并通过 Martin Emde 的共同努力以及 Josef Šimánek、Samuel Giddins 和 Eric 做出的重大贡献得以解决。 在此处进一步了解报告。
-
软删除用户记录
@segiddins 为软删除用户记录(审核/事件记录系统的一个基础步骤)实现了一项功能。这确保了在用户删除帐户后,仍然保留对引用用户的历史记录的数据库关系。当用户请求删除帐户时,我们会清除用户记录中的所有用户信息,将其标记为已删除,但保留在数据库中。已删除的记录不会显示在该网站的查询中。在 #4376 和 #3766 中查找关于此更新的详细信息。
-
更新至 Rails 7.1
我们将 RubyGems.org 更新至 Rails 7.1,以保持 Rails 应用的依赖项处于最新状态。更新涉及一个长期存在的 PR,解决了依赖项问题。在确保所有上游依赖项均支持 Rails 7.1 以及更新 Rails 配置以与 7.1 默认值匹配后,合并和部署过程顺利进行。
一月份,RubyGems.org 获得了由 8 位作者 提交的 85 个新提交。在 224 个文件中进行了 2490 次添加和 1238 次删除。
感谢
感谢本月所有 RubyGems 和 RubyGems.org 的贡献者!我们非常感谢您的贡献,也非常感谢您的支持。
RubyGems 的贡献者
- @mrkn Kenta Murata
- @deivid-rodriguez David Rodríguez
- @hyuraku hyuraku
- @segiddins Samuel Giddins
- @hsbt Hiroshi Shibata
- @martinemde Martin Emde
- @simi Josef Šimánek
- @avdi Avdi Grimm
- @ccutrer Cody Cutrer
- @bravehager Brave Hager
- @stanhu Stan Hu
- @ntkme なつき
- @olleolleolle Olle Jonsson
- @ohbarye Masato Ohba
- @williantenfen Willian Tenfen Wazilewski
- @m-nakamura145 Masato Nakamura
RubyGems.org 的贡献者
- @hsbt Hiroshi Shibata
- @simi Josef Šimánek
- @martinemde Martin Emde
- @segiddins Samuel Giddins
- @robbyrussell Robby Russell
- @a5-stable B3
- @duckinator Ellen Marie Dash
访问 RubyGems 贡献指南了解有关如何为 RubyGems 做出贡献的更多信息。我们欢迎所有形式的贡献,包括修复缺陷、执行功能、编写和更新文档及分类缺陷。