2024 年 6 月 28 日,星期五

不可变的 Rails Cache Header、Strict Local Templates 中的 Local Assigns、Threaded Active Storage Mirror Service

作者:zzak

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

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

还将“local_assigns”传递给严格局部变量模板
在局部模板中使用 严格局部变量 时,现在会将 local_assigns 传递给视图,以解决尝试访问与 Ruby 关键字同名的变量的默认值时出现的问题。

修复邮件程序模板以符合 RuboCop 标准
修复了邮件程序生成器和 脚手架 的一个问题,使生成的代码符合 RuboCop 标准。这将影响新生成的应用程序,这些应用程序创建邮件程序或脚手架后,在默认生成的 CI 配置中会立即失败。

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

避免 rdoc 生成耗费不合理的时间
由于 RDoc 中最近才发现的一个 bug,Rails CI 中的 docs-preview 管道花费了 *过长* 的时间来完成。我希望您在提交 PR 来更新 Rails 文档时能利用好这个管道。

为调用 TimeWithZone 对象的“to_time”时保留时区信息添加了配置
在使用 Active Support 的 to_time 方法处理 TimeWithZone 对象时,现在可以配置是保留时区还是使用 UTC 偏移量。

提高 Active Storage Mirror Service 的性能
这最初是 Mirror Service 在 Active Storage 实现中的一个 FIXME,但现在所有服务上的方法都通过线程调用。这应该能提高上传性能,尤其是在有多个镜像的情况下,但您应该注意底层的服务必须是线程安全的。

为 Pool、Adapter、Config 添加精简的 #inspect
以前,如果错误最终调用了 ConnectionPool 或单个连接(Adapter)的 inspect,很容易在生产日志中意外泄露数据库密码。这是因为 Pool 和 Adapter 的默认 #inspect 输出不必要地大,并且两者当前都包含密码(通过 Pool 的 DatabaseConfig 以及 Adapter 的内部配置)。

使用 Thor 处理内置的 stats 任务
目前,我们在 bin/rails 命令中同时使用了 Thor 和 Rake。我们最终希望将所有内置任务迁移到 Thor 命令。此 PR 将 stats 任务迁移到 Thor,并弃用直接使用 bin/rake stats

您可以在 此处 查看所有更改的列表。 过去一周,我们有 24 位贡献者 为 Rails 代码库做出了贡献!

下次再见!

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