2023 年 6 月 2 日星期五

HTML5 清理器、path_params 等

Wojtek 发帖

大家好,我是 Wojtek。让我们探索本周 Rails 代码库的变更。

更新 Action View 以使用 HTML5 标准兼容的清理器
添加对 HTML5 标准兼容的清理器的支持,如果受支持,则在 Rails 7.1 配置中将 Rails::HTML5::Sanitizer 设置为默认值。可以通过设置 config.action_view.sanitizer_vendor 来配置 Action View 的 HTML 清理器。支持的值是 Rails::HTML4::SanitizerRails::HTML5::Sanitizer

将 “path_params” 添加到 “url_for”
url_for 帮助器现在支持一项称为 path_params 的新选项。这可能在以下情况下有用:你只希望添加一个必需的参数,该参数是路由 URL 的一部分,但对于其他路由,不添加无关的查询参数。

在创建 Active Record 对象时给自动填充的列赋值
更改记录创建逻辑以允许 auto_increment 列在创建后立即赋值,无论其与模型主键的关系如何。PostgreSQL 适配器从更改中受益最大,因为它允许在插入行后立即使用 RETURNING 语句向对象分配任意数量的自动填充列。

处理 “simple_format” 帮助器中的 “sanitize_options”
现在可以通过传递的选项配置清除功能。

从 “connects_to” 哈希中设置 “default_shard”
一些应用程序可能不想在连接模型中使用 :default 作为分片名称。不幸的是,Active Record 预期存在 :default 分片,因为它必须假定存在一个分片才能从池管理器中获取正确的连接。与其强制应用程序手动设置它,connects_to 可以从分片哈希中推断出默认分片名,现在将假定第一个分片是你的默认分片。

添加运行状况检查配置
添加 health_check_pathhealth_check_application 配置,以在指定路径上挂载给定的运行状况检查机架应用程序。在单独挂载 Action Cable 时很有用。

支持 VISUAL 环境变量,并优先于 EDITOR
在打开临时文件以编辑加密文件时。

允许通过表单发送移除 Active Storage 附件
附件已经可以通过将附件更新为 nil 来移除,例如:User.find(params[:id]).update!(avatar: nil)

然而,一个表单无法发布一个 nil 参数,它只能发布一个空字符串。但是,发布一个空字符串会导致一个代码 ActiveSupport::MessageVerifier::InvalidSignature: mismatched digest 错误被引发,因为它是被当做一个有符号的 blob id 处理的。现在,nil 和一个空字符串被当做一个删除处理,这允许附件通过如下方式被移除:User.find(params[:id]).update!(params.require(:user).permit(:avatar))

你可以查看 这里 的整个变更列表。
在上周,我们有 23 个贡献者 为 Rails 代码库做出了贡献!

下次见!

订阅 以便收到通过邮件发送给你的这些更新。