2025年7月25日,星期五

PostgreSQL 18 警告、安全密码改进以及更多!

由 vipulnsward 发布

您好,我是Vipul。让我们一起来看看本周 Rails 代码库中的变更。

避免在生成的 fixtures 中进行动态加密
现在,用于密码的 fixtures 会生成静态哈希。在此之前,带有密码摘要属性的 fixtures 在每次测试运行时都会重新生成哈希。

不要为 JRuby 添加 bundler 平台
通过不添加可能导致 gem 安装问题的额外平台来修复 JRuby 上的 Rails 应用。

使 ActiveSupport::Gzip.compress 具有确定性
ActiveSupport::Gzip.compress 现在通过始终将 gzip 时间戳设置为零来产生一致的输出,这消除了在比较压缩数据时出现的测试不稳定问题。

修复 HashWithIndifferentAccess#transform_keys! 以避免冲突
修复了一个 bug,该 bug 会在更改哈希中的键时,如果键发生冲突,可能会意外丢失一些键。

当使用 pg gem < 1.6.0 和 PostgreSQL 18+ 时发出警告
如果 Rails 项目使用 PostgreSQL 18+ 和过时的 pg gem(< 1.6.0),则会添加一个警告,以防止 PG::Connection#cancel 出现兼容性问题。

修复 Action Cable 与 redis-rb 5.4.1 的兼容性
使 Action Cable 与 redis-rb 5.4.1 兼容,因为 redis-rb 中的一个不兼容 bug 现已解决。

移除对 GCP 元数据服务器的不必要调用
在身份验证逻辑中删除了对 GCP 元数据服务器的冗余调用,从而降低了潜在的延迟和服务器负载。

为初始化程序中引用的 Active Model 自动加载的常量添加 load-hooks
此更改为 active_model_erroractive_model_secure_password 添加了 load hooks,使初始化程序更容易引用应该自动加载的 Active Model 常量。

has_secure_password:修复密码验证。
确保即使原始密码仅包含空格,也会验证密码确认,从而使 has_secure_password 的行为更加一致。

将 render json 添加到 health
使 Rails health controller 能够响应 JSON,从而增强了对仅限 API 的应用程序的支持。

添加 ActiveRecord::Tasks::AbstractTasks 以便根据适配器行为进行子类化
引入了一个基类,允许数据库适配器自定义任务行为,从而改进了特定于适配器的处理。

加载 schema 时避免清除测试数据库
在加载数据库 schema 时防止清除测试数据库,从而提高了测试套件的可靠性。

gitignore config/credentials 中的所有密钥文件
配置 .gitignore 以排除 config/credentials 中的所有文件,从而保护密钥文件免遭意外提交。

使 nonce: false 移除 javascript_tagjavascript_include_tagstylesheet_link_tag 的 nonce 属性
nonce: false 设置现在会移除 javascript_tagjavascript_include_tagstylesheet_link_tagnonce 属性。

允许 ActionDispatch::Http::URL 使用自定义域名提取器类
允许使用自定义类进行域名和子域名提取。如果未设置自定义提取器,则会使用新的默认提取器 ActionDispatch::Http::URL::DomainExtractor 来处理域名。

在 Action Text Fixtures 中读取 ActionText::Attachment.tag_name
更新 Action Text fixtures,如果设置了 config.action_text.attachment_tag_name,则使用正确的 Action Text 附件标签名称。

Action View:减少 tag helper 的公共 API
清理了 tag helper 的公共 API 表面,以提高可维护性和清晰度。


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

下次再见!

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