2024 年 6 月 28 日,星期五

不可变的 Rails 缓存头、严格局部模板中的局部分配、线程化的 Active Storage 镜像服务

zzak

大家好,我是 zzak。下面让我们了解一下 Rails 代码库中本周的变更内容。

支持 Cache-Control 中的“immutable”指令
此 PR 为 expires_in 方法添加了一个新选项,以支持“Cache-Control”头部的 immutable 指令。

还将“local_assigns”传递给严格的局部模板
在局部中使用 Strict Locals 时,local_assigns 现已传递给视图,以便解决以下问题:尝试访问与保留 Ruby 关键字同名的默认值。

修复邮件生成器模板以使其符合 RuboCop
修复了邮件生成器和 scaffolding 的一个问题,以使生成的代码符合 RuboCop。这会影响新生成的应用程序,默认情况下,创建邮件或 scaffolding 就会立即在生成的 CI 配置中失败。

正确生成 devcontainer 设置,适用于使用 mysql2 gem 的应用程序
此 PR 确保使用 mysql2 gem 作为其数据库适配器的应用程序仍可与 devcontainer 命令配合使用。

不要让 rdoc 生成的花费过多的时间
由于最近才发现的 RDoc 中的一个 bug,Rails CI 中的 docs-preview 管道花费的时间实在太长。我希望你提交 PR 来更新 Rails 文档时能利用此管道。

添加一个配置,用于在调用 TimeWithZone 对象的“to_time”时保留时区信息
现在,当你对 TimeWithZone 对象使用 Active Support 的 to_time 方法时,你可以配置是要保留时区还是使用 UTC 偏移量。

提升 Active Storage 镜像服务的性能
这最初是针对镜像服务的原始 Active Storage 实现中的一个 FIXME,而现在,跨所有服务调用的方法都使用线程来实现。这应能提升上传性能,尤其是当有多个镜像时,但你应注意底层服务必须是线程安全的。

添加了针对 Pool、Adapter、Config 的简短 #inspect
之前,如果错误最终导致检查 ConnectionPool 或单独连接(适配器),那么在生产日志中意外泄漏数据库密码非常容易。这是因为 Pools 和 Adapters 的默认 #inspect 输出不必要地大,并且目前都包含密码(通过 Pool 的 DatabaseConfig 和 Adapters 的内部配置)。

使用 Thor 进行内置统计任务
目前,我们同时对 bin/rails 命令使用 Thor 和 Rake。我们最终希望将所有内置任务都提升为 Thor 命令。这会将 stats 任务迁移到 Thor,并弃用直接使用 bin/rake stats

您可以在 此处 查看完整更改列表。 上周我们有 24 个贡献者 为 Rails 代码库做贡献!

下次见!

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