2025 年 3 月 28 日,星期五

在测试中捕获错误报告以及更多

作者:Wojtek

大家好,我是 Wojtek。让我们一起来看看过去两周 Rails 代码库的变更。

添加 capture_error_reports
捕获块内所有报告的、与给定错误类匹配的错误。

reports = capture_error_reports(IOError) do
  Rails.error.report(IOError.new("What a Terrible Failure"))
  Rails.error.report(StandardError.new)
end
assert_equal 1, reports.size
assert_equal "What a Terrible Failure", reports.first.error.message

渲染控制器中的 JSON 不再总是转义
JSON 渲染器不再转义 HTML 实体或 Unicode 行分隔符。由于该渲染器用于以 application/json 形式返回 JSON 文档,因此通常无需转义这些字符,这可以提高性能。

您可以使用 escape: true 选项或设置 config.action_controller.escape_json_responses = true 来恢复转义行为。

在插入测试路由之前加载延迟路由集
如果不提早加载延迟路由集,我们将错过 after_routes_loaded 回调,并且如果由引擎触发了另一个加载,则可能以测试路由而不是实际路由调用它们。

将 RuboCop 缓存添加到 GHA 工作流模板
目的是通过在可能的情况下在工作流运行之间共享缓存来加速 RuboCop 检查。

在 PostgreSQL 和 SQLite 的 UPDATE 中使用自连接进行外连接
在 PostgreSQL 和 SQLite 的 UPDATE 中,当 OUTER JOIN 在 ON 子句中引用被更新的表时,连接条件无法移至 WHERE 子句而不破坏查询,因此当前实现被迫使用子查询。我们可以通过更积极的操纵来支持这一点:我们将 FROM 子句中的被更新表复制到 FROM 子句中,并通过主键进行自连接。

PostgreSQL 时区时间戳的指南更新
记录如何使用配置选项将默认时间戳数据类型从 不带时区的时间戳 更改为 带时区的时间戳

您可以在 这里 查看所有更改。 在过去的 2 周里,有 20 位贡献者 为 Rails 代码库做出了贡献!

下次再见!

订阅以通过邮件获取这些更新。