2024 年 5 月 31 日,星期五

Rails 8 中 Propshaft 的默认设置、指南更新、transaction.active_record 事件,以及更多!

zzak 发表于

嗨,我是 zzak。让我们探讨本周 Rails 代码库中的更改。

Rails World 2024 演讲者阵容已公布!
以及 6 月 4 日下午 2 点 ET 将发行的另一小批门票!

Rails Foundation 文档团队还提交了两个 Rails 指南供社区评审。如果您有反馈,请在此处提交:Action View 表单帮助指南活动记录迁移指南

将 Rails 8 中的资产管道默认值更改为 Propshaft
Sprockets 对我们帮助很大,但现在是将其火炬交接给 Propshaft 在 Rails 8 中的时候了。

添加名为“调整部署性能”的 Rails 指南
本指南介绍了 Puma 和 CRuby 的主要并发性和性能原则。

将事务对象传递给“transaction.active_record”订阅者
transaction.active_record 的 Active Support Instrumentation 事件现在随有效负载中的事务一起提供,如果您需要跟踪数据库活动,您可以参考事务。

在“sql.active_record”事件有效负载中包含当前事务
在上一个更改之后,我们还在 sql.active_record 事件有效负载中包括了当前事务。这允许跟踪数据库活动,包括按事务对查询进行分组,这要归功于 最近添加的 ActiveRecord::Transaction#uuid

定义 Digest::UUID.nil_uuid
RFC 4122 中定义的,现在已将所谓的 nil UUID 添加到 Digest::UUID 中。

在 app:update 命令期间更新公共目录
此 PR 修复了一个错误,该错误会在升级 Rails 版本时发生,其中 app:update 命令不会生成 /public 中的新文件。例如,从 Rails 7.1 升级到 7.2 不会创建新的 406-unsupported-browser.html 文件。

使用 display-capture 和 keyboard-map 更新权限策略列表
由于 display-capture(Chrome 94)和 keyboard-map(Chrome 97)现在是 标准化策略控制功能

改进“ActiveSupport::BroadcastLogger”的兼容性
此 PR 更改所有日志记录方法的返回值以返回 true,类似于 Ruby 中的 Logger 类。

为“wasm-unsafe-eval”添加 CSP 映射
内容安全政策的 'wasm-unsafe-eval' 关键字允许加载和执行 WebAssembly 模块,而无需通过 'unsafe-eval' 来允许不安全的 JavaScript 执行。

改进 ActionCable 的 TestCookieJar 接口
此 PR 实现了类似于 ActionDispatch::Cookies::CookieJarActionCable::Connection::TestCookieJar 的使用,涉及 cookie 值的设置。

当存储列配置不当时引发一个描述性错误
如果开发人员忘记使用结构化列类型 (hstore 或 json) 或者使用 ActiveRecord.store 声明序列化器,那么现在将引发一个 ConfigurationError,其中包含一条友好的错误消息,而不是不带任何详细信息的 NoMethodError

pretty_print 的行为更类似于 inspect
此拉取请求使 pretty_print 对活动记录对象的行为与 inspect 相匹配,而不是使用它使用 attribute_for_inspect 的“原始”属性。

修复具有复合标识主键的模型的非部分插入
在进行非部分插入时,我们不仅应该忽略具有默认函数的未更改列,还应该忽略在数据库中自动增量(因此没有默认函数)的列。

在消息加密器中进行 Base64 解码期间捕获标准错误
由于用户破坏了 cookie(应用程序使用 cookie 存储),并提供了最终触发 Base64 类引发的 NoMethodError: undefined method unpack1' for nil 的自定义值(得益于一系列的 крайние случаи),因此 RubyGems.org 最近遇到了 500 HTTP 响应。

对结果行编制索引,而不是将它们转换为哈希
此优化通过避免将每一行转换为哈希,从而提升了 Result#each 的性能。

添加 “ActiveRecord::Relation#readonly?”
添加到关系对象的新方法可以让开发人员检查该对象是否标记为只读。

修复 AllowBrowser 版本
当使用 allow_browser 帮助程序时,此 PR 会更新 :modern 浏览器设置,以支持 Chrome v120+ 和 Opera v106+,其中包括对 CSS 嵌套的支持。

您可以在 此处 查看整个更改列表。 本周有 31 位贡献者 为 Rails 代码库做出贡献!

下期再见!

订阅以接收这些更新邮件。