2024年5月17日,星期五

Rails 8 开发启动、发布 7.0.8.2 & 7.1.3.3、Kamal 默认支持,以及更多!

由 vipulnsward 发布

大家好,周五快乐!

我是 Vipul,带来“Rails 本周动态”的最新消息。让我们开始吧。

Rails 8.0 开发现已启动 🎉
本周是 Rails 8.0 开发的正式启动周。请继续关注 Rails 8.0 的新功能和变更 🎉。

Rails 8 将只支持 Ruby 3.3+ 用于新应用

默认添加 Kamal 到 Rails 8
此 PR 默认添加 Kamal 用于部署,包括生成特定于 Rails 的 config/deploy.yml。您可以使用 --skip-kamal 跳过此选项。在 Kamal 的官方网站上了解更多关于 Kamal 的信息。

为 create_schema 添加 :if_not_exists 和 :force 选项支持
此更改为 create_schema 添加了缺失的 :if_not_exists:force 选项支持。

已发布 7.0.8.2 和 7.1.3.3
发布了两个新的 Rails 版本,将 Trix 升级到 2.1.1 以修复 CVE-2024-34341

点击此处查看更多详情 - Trix 编辑器中的 XSS 漏洞

修复 ActiveRecord::Relation#touch_all 在使用别名属性进行更新时出现的问题
在此更改之前,如果我们有如下定义:

create_table :users do |t|
  t.timestamp :legacy_updated_at
end

class User < ActiveRecord::Base
  alias_attribute :updated_at, :legacy_updated_at
end

User.touch_all(:updated_at)

那么 ActiveRecord 将无法正确地将 updated_at 解析为其别名,导致执行一个会更新同一列两次的查询。此 PR 修复了此行为,以正确解析别名。

支持 ActiveSupport::XmlMini 中的 duration 类型
在此更改之前,ActiveSupport::XmlMini 无法处理 XML 中的 duration 类型,而 duration 是原始数据类型之一。此 PR 使用 ActiveSupport::Duration 添加了对 duration 类型的支持。

支持批处理 touch_all
此更改增加了对批处理 touch_all 的支持。这与 update_all/delete_all/etc 的支持类似。

  Post.in_batches.touch_all

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

下次再见!

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