2023年9月15日,星期五

本周 Rails:7.1 beta 发布,Bun 支持以及更多!

发布者:greg

大家好,我是Greg,为您带来Rails代码库的最新变化。

Rails 7.1 beta 版发布
Rails 7.1 的第一个 beta 版本已经发布!自 Rails 7.0 以来,已有超过 800 位贡献者提交了五千多项提交,因此本次发布充满了新功能和改进。您可以在公告中阅读更改摘要。

忽略 env 文件(模板除外)
为防止意外将敏感信息泄露到代码仓库,默认的 .gitignore 文件从现在开始排除 .env(模板文件除外)。

明确的 primary_key: 选项在关联中应始终具有优先权
此拉取请求修复了当关联模型配置了 query_constraints 时,primary_key: 选项被忽略的问题。现在 primary_key: 选项始终具有优先权,只有当没有 primary_key: 选项时,才会使用 query_constraints 来确定 association_primary_key 值。

检测 Active Record 事务
此拉取请求添加了一个新的 transaction.active_record 事件,用于跟踪 Active Record 管理的事务何时发生。它将连接包含在 payload 中(例如,有助于区分不同数据库的事务),

添加 Bun 支持
Bun 是 node.js 运行时、yarn 包管理器和 esbuild 打包器的全新可行替代方案。Bun 的主要区别特征是速度。它通常比 node.js 及其同类产品快几倍。
由于大多数常规 Rails 项目只是想在 JavaScript 中添加一些内容(但有时又想要比 import-maps 更好的 JavaScript 生态系统),Bun 非常适合,并且可以轻松被新的 Rails 项目采用。

为复合主键添加专用指南
此拉取请求为复合主键的使用添加了专用指南。
除了专用指南之外,#49218 还建议在 :through 关联的联接表上使用复合主键。

通过迁移助手支持复合外键
Rails 迁移助手现在支持复合主键。以下是使用它们的一些示例

# Assuming "carts" table has "(shop_id, id)" as a primary key.
add_foreign_key(:orders, :carts, primary_key: [:shop_id, :id])
# or
add_foreign_key(:orders, :carts, column: [:cart_shop_id, :cart_id])

remove_foreign_key(:orders, :carts, primary_key: [:shop_id, :id])
foreign_key_exists?(:orders, :carts, primary_key: [:shop_id, :id])

在“测试指南”中添加“测试视图部分”部分
在扩展继承自 ActionView::TestCase 的测试可用工具的指南中,添加了一个“测试视图部分”部分。

添加了在添加检查约束时对 if_not_exists 的支持。
add_check_constraint 方法现在接受 if_not_exists 选项。如果设置为 true,则如果检查约束已存在,不会引发错误。此外,在反转 remove_check_constraintadd_check_constraint 时,如果设置了 if_existsif_not_exists 选项,则会进行转置。这使得创建幂等的、非事务性的迁移变得简单。

加密:支持每个属性级别的 support_unencrypted_data
如果启用了 ActiveRecord::Encryption.config.support_unencrypted_data,此更改允许您在需要时覆盖属性上的全局设置。

生成具有危险名称的属性时引发错误
生成具有 hashsave 等属性的模型应引发错误,而不是生成具有无效属性的迁移,此拉取请求已实现这一点。

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

下次再见!