大家好!我是 Vipul,为您带来本周 Rails 代码库最新更改的汇总。
引入 config.dom_testing_default_html_version 并使用 Rails::Dom::Testing 解析测试助手中的 HTML
之前,Rails::Dom::Testing 添加了对 HTML5 的支持。如果我们仍然希望依赖基于 HTML4 的测试,这可能会导致问题。此更改添加了一个新的配置选项 config.dom_testing_default_html_version,允许用户配置在测试助手解析 HTML 时使用的 HTML 版本 4/5。
此更改允许使用新的语法按行范围过滤测试。例如,以下命令运行从第 10 行到第 20 行的测试。
$ rails test test/models/user_test.rb:10-20
支持 PostgreSQL 15+ 中的 NULLS NOT DISTINCT
此更改为 PostgreSQL 15+ 索引添加了对 NULLS [NOT] DISTINCT 的全面支持。
之前已经完成了在 migration 中创建索引的工作,但 schema.rb 中不支持。此外,NULLS [NOT] DISTINCT 的匹配顺序不正确,这可能导致不一致的 schema 检测。
John 一直在对 .to_json 进行各种速度改进。此最新更改将 HTML 实体转义的性能提高了约 2 倍。总的来说,这些更改使 .to_json 的性能比 Rails 7.0 快约 4.5 倍。
允许在 ActionRecord::Sanitization#replace_named_bind_variables 中转义字面量冒号
此提交增加了在命名绑定变量时转义 sanitize_sql_* 方法中字面量冒号字符的能力。例如:
sanitize_sql_array(["TO_TIMESTAMP(:date, 'YYYY/MM/DD HH12\\:MI\\:SS')", date: "foo"])
# => "TO_TIMESTAMP('foo', 'YYYY/MM/DD HH12:MI:SS')"
从 Gemfile 模板中省略 webdrivers gem
自 Selenium 4.6 起,Selenium Manager 能够管理 Chrome Driver 的安装和集成。这使得对 webdrivers gem 的需求变得过时。此提交对 Gemfile 模板进行了更改,以省略 webdrivers gem 依赖项,这样新生成的应用程序就不需要它了。
添加 Arel::FactoryMethods#cast(node, type)
CAST(field as type) 是一个广泛支持的 SQL 函数。此 PR 使用 cast(field, type) 辅助函数为该命名函数添加了本地 Arel 支持。
product_table = Product.arel_table
product_table.cast(product_table[:position], "integer")
# => CAST("products"."position" as integer)
许多 CI 工具都支持在其 UI 中显示系统规范失败的屏幕截图。此 Pull Request 更改了 ActionDispatch::SystemTesting::TestHelpers::ScreenshotHelper,使其在失败时将屏幕截图路径保存在测试元数据中,CI 工具可以使用它来显示屏幕截图。
您可以在 此处查看所有更改。
上周,我们共有 27 位贡献者为 Rails 代码库做出了贡献!
下次再见!
订阅以通过邮件获取这些更新。