2025年1月17日,星期五

新 Rails 应用的 Dependabot 更新减少到每周一次,Auth 生成器获得更安全的退出

作者:zzak

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

减少新项目中 Dependabot 更新的频率。
这会将新生成的 Rails 应用的 Dependabot 更新频率从 daily 更改为 weekly

身份验证生成器的 SessionsController 在注销时清除浏览器缓存
注销时,SessionsController#destroy 操作会设置一个“Clear-Site-Data”标头来清除浏览器缓存。这是为了防止通过浏览器的“后退/前进缓存”在注销后可能发生数据泄露。

修复“delete_all”与“update_all”允许方法之间的不一致
在此更改之后,尝试使用 distinct 或 CTE(withwith_recursive)调用 update_all 将被弃用,并在 Rails 8.2 中引发错误。这与 delete_all 的行为一致。

使“exists?”查询可重试
以前,#exists? 查询永远无法重试,因为 "1 AS one" 是作为字符串传递的,该字符串被标记为不可重试。

修复 ActiveSupport::Cache::Store#fetch 中的错误过期时间
此 PR 修复了从缓存存储中获取过期条目时的错误,因为过期时间未被正确处理。

不要将“script”或“style”内容包含在节点纯文本转换中
提醒一下,Action Text 内容在没有额外清理的情况下不应在浏览器中呈现。

Flash.add_flash_types 应将辅助方法定义为私有
此 PR 恢复了 Rails 7.0 之前的行为,即 noticealert 操作可以定义在控制器上,这是由于 flash 辅助方法。

消除 Model.respond_to? 调用时的分配
为了降低实例化模型的成本(例如进行 Post.new),respond_to? 得到了优化,以避免在初始化(以及其他查询)期间进行不必要的分配。

将 Active Storage 的 Filename “to_str”委托给“to_s”
此更改允许字符串相等性(String#==)与 ActiveStorage::Filename 对象一起使用。

确保 Active Storage 的“analyzers”配置不包含 nil
您可能希望通过设置 config.active_storage.variant_processor = nil 来禁用 Active Storage 的变体处理器,但这会在此补丁之前导致 Rails 启动时出现其他问题。

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

下次再见!

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