2025年2月14日,星期五

路由查找优化、PostgreSQL Alter Table 改进以及更多!

由 vipulnsward 发布

大家好,周五快乐!

Vipul 在此为您带来本周 Rails 的最新动态。

本周,路由查找进行了多项改进。以下是一些值得注意的更改:

通过减少切片/匹配来加速 GTG 模拟器
此更改通过消除重复和避免不必要的字符串分配,将简单情况下的路由性能提高了 10-20%。

微优化 Router#find_routes
此 PR 通过移除开销,对路由查找过程进行了微小改进,并使路由查找速度比 Rails 8.0 快 2-2.5 倍。

简化 stdparam 状态以减少保留的哈希
此 PR 简化了 stdparam_state 中存储的数据,使其成为更简单的哈希映射,从而提高了哈希密集型操作的性能。

以下是该领域其他改进 PR 的列表: #54504#54491#54505#54515#54516#54526

允许执行包装器处理所有异常
此 PR 更改了执行包装器和执行中间件,使其默认捕获所有 Exception 而不是所有 StandardError

本质上,在此更改之前

Rails.error.handle do
  raise Exception
end

将不会处理异常,但现在会了。

将 Value 类型默认设置为可变
此更改默认使 ActiveModel 类型值可变,从而保证自定义类型值在修改时得到适当的复制。

将关键字参数传递给 PostgreSQL Adapter 表方法
通过使用转发参数 validate_constraintvalidate_check_constraint 开始接受关键字参数奠定了重要的基础。

进一步限制需要运行的矛盾查询
此更改可确保只有完全匹配的查询才会触发聚合,忽略不匹配项和某些 ARel 值,以避免一些额外的查询。

允许跳过 HashWithIndifferentAccess 值转换
此 PR 解决了 ActiveModel 处理属性更改中的效率低下问题,特别是在使用序列化属性中的 HashWithIndifferentAccess 时。

您可以在此处查看所有更改的完整列表: 此处

上周,我们有 18 位贡献者 为 Rails 代码库做出了贡献!

下次再见!

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