2024年5月31日,星期五

Rails 8 的 Propshaft 默认设置、Guides 更新、transaction.active_record 事件等!

作者:zzak

大家好,我是 zzak。让我们一起来看看本周 Rails 代码库的改动。

Rails World 2024 演讲者阵容公布!
此外,另一批少量门票将于美国东部时间6月4日下午2点发售!

Rails Foundation 文档团队还提交了两份 Rails 指南供社区审查。如果您有反馈意见,请在此处提交:Action View 表单助手指南Active Record 迁移指南

Rails 8 中将资产管道默认值更改为 Propshaft
Sprockets 已经很好地为我们服务了,但现在是时候在 Rails 8 中将火炬交给 Propshaft 了。

添加名为“部署性能调优”的 Rails 指南
本指南解释了 Puma 和 CRuby 的主要并发和性能原理。

将事务对象传递给“transaction.active_record”订阅者
Active Support 的 transaction.active_record 仪表化事件现在会在负载中包含事务,以便您可以在需要跟踪数据库活动时引用事务。

在“sql.active_record”事件负载中包含当前事务
继上一个更改之后,我们还在 sql.active_record 事件负载中包含了当前事务。这使得数据库活动跟踪成为可能,包括能够根据事务对查询进行分组,这得益于最近添加ActiveRecord::Transaction#uuid

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

在 app:update 命令期间更新 public 目录
此 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 使 ActionCable::Connection::TestCookieJar 在设置 cookie 值时与 ActionDispatch::Cookies::CookieJar 更加相似。

当 Store 列配置错误时引发描述性错误
如果开发人员忽略使用结构化列类型 (hstore 或 json) 或使用 ActiveRecord.store 声明序列化器,则现在会引发 ConfigurationError 并附带一个友好的错误消息,而不是一个没有细节的 NoMethodError

使 pretty_print 的行为更类似于 inspect
此拉取请求使 Active Record 对象上 pretty_print 的行为与 inspect 保持一致,而不是使用“原始”属性,而是使用 attribute_for_inspect

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

在消息加密器中捕获 Base64 解码过程中的 StandardError
RubyGems.org 最近由于用户篡改 cookie(应用程序使用 cookie 存储)并提供自定义值(由于一系列边缘情况)而导致 500 HTTP 响应,该值最终触发了从 Base64 类引发的 NoMethodError: undefined method unpack1' for nil

索引 Result 行而不是将其转换为哈希
此优化通过避免将每一行转换为哈希来提高了 Result#each 的性能。

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

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

您可以在这里查看完整的更改列表:here 上周,我们有 31 位贡献者为 Rails 代码库做出了贡献!

下次再见!

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