2023 年 7 月 28 日,星期五

本周 Rails 动态 - 2023 年 7 月 28 日

发布者 zzak

大家好,我是 zzak。现在让我们探索本周 Rails 代码库中的改动。

Rails 中间件测试中的 Rack::Lint
虽然这项工作在技术上不面向用户,但确保 Rails 的未来版本继续兼容 Rack SPEC 至关重要。如果你感兴趣或维护一个依赖于 Rack 的代码库,可以详细了解 Rack 3 升级指南

转储时对 SchemaCache 成员进行排序
此 PR 使生成 schema 缓存的结果保持一致,从而允许对缓存密钥使用文件摘要。

向音频分析器元数据添加标记
通过这一改动,分析音频文件时,Active Storage 现在将从元数据中提供任何其他标记。例如,如果你需要访问编码器,这会很有用。

引入 “capture_emails” 和 “capture_broadcasts”
此 PR 将之前未发布,已添加到 “assert_emails” 和 “assert_broadcasts” 的行为恢复到这两个新方法中。

在 JRuby/TruffleRuby 上使 ActiveRecord 的带引号名称缓存线程安全
此 commit 修复了在 TruffleRuby 上运行 Rails 应用程序时的线程安全问题。构建 SQL 查询时会更新 ActiveRecord 的带引号名称缓存。如果两个线程同时构建查询,它们都可能尝试更新缓存。这会导致两个线程看到完全不同的缓存存储,从而导致跨不同线程出现多个活动缓存,这会消耗额外的内存,并且调试时可能会令人困惑。

防止在不必要时检查传输数据
目前在每次调用 “ActionCable::Channel::Base#transmit” 时,都会生成检查提供的数据对象的调试日志消息。即使日志记录器的级别高于 WARN,也会生成该消息。此补丁程序使其仅在可以记录消息时生成消息。

让所有缓存存储在 “#delete” 中返回布尔值
此 PR 使 “Rails.cache.delete(‘key’)” 的行为保持一致,以便在存在条目时返回 “true”(否则返回 “false”)。以前,RedisCacheStore 和 FileStore 的行为不同。

恢复 enums 中 “where.missing” 和 “where.associated” 的行为
此 PR 修复了一个回归,其中调用 “associated” 方法会导致 SQL 查询不正确,从而导致结果混乱。

延迟反序列化缓存条目
这添加了一个缓存优化,无需反序列化 expired 和版本不匹配的缓存条目的值即可检测这些条目。使用缓存格式版本 >= 7.1 或自定义序列化程序时会启用此优化。

支持替换缓存压缩器
此 PR 为替换用于序列化缓存项的压缩器添加了支持,方法是在 “config.cache_store” 上指定“:compressor” 选项。类似于用于替换负责缓存值的序列化器的“:coder”选项,coder 负责序列化整个 “ActiveSupport::Cache::Entry” 实例。

你可以在 此处 查看所有更改列表。
在过去一周,有 20 位贡献者 向 Rails 代码库提交了代码!

下周见!

订阅 以收到邮件更新。