2024年9月13日,星期五

Solid Cable 作为默认、2 个新的指南 PR 以及更多!

由 vipulnsward 发布

大家好,周五快乐!特别是13号 🎃

我是Vipul,带来本周Rails的最新更新,内容来自本周精彩的 EuRuKo 大会!我们开始吧。

新的Guides Pull Request待审阅
本周有两个新的Guides Pull Request供社区审阅。如果您精通 Action Mailer 或 Error Reporting,请在此处审阅并提交您的反馈。

添加Solid Cable
此更改开始在生产环境中使用 Solid Cable 作为默认的 Action Cable 适配器,在 config/database.yml 中配置为一个单独的队列数据库。它将消息保存在表中并持续轮询更新。

这使得在不用于其他目的的情况下,可以放弃对Redis的普遍依赖。尽管进行了轮询,但在大多数情况下,Solid Cable的性能与Redis相当。并且在任何情况下,当Redis不再是Action Cable功能的必需依赖项时,部署Rails都会变得更加容易。

弃用Benchmark.ms并为gemspec添加benchmark
Ruby计划将 benchmark 打包成一个内置gem。此更改为将来弃用Rails核心扩展,转而使用内置gem做好了准备。

弃用 unsigned_float 和 unsigned_decimal 简写列方法
此更改弃用了 unsigned_floatunsigned_decimal 简写列方法。

从MySQL 8.0.17开始,UNSIGNED 属性已弃用于 FLOATDOUBLEDECIMAL 类型的列。对于这些列,可以考虑使用简单的 CHECK 约束代替。更多详情请 此处 查看。

允许 BroadcastLogger 传递 kwargs
某些 Logger 实现可能希望扩展日志接口,通过关键字参数提供可选信息。此更改增强了 BroadcastLogger 以允许此功能。

修复 travel_to 在 with_usec 为 false 且给定参数为 String 或 DateTime 时将 usec 设置为 0
在此更改之前,travel_to 会根据参数(StringDateTime)的不同,不将 usec 设置为 0。此PR修复了此行为,使其保持一致。

修复 .left_outer_joins 在多个关联具有相同子项时
此更改修复了一个问题:当使用多个具有相同子关联但父项不同的关联时,.left_outer_joins 无法连接所有父项。

以前,当使用具有相同子关联的 .left_outer_joins 时,只会连接其中一个父项。在此修复后,它现在可以正确连接两个父项。

alias_attribute: 处理用户定义的源方法
在此更改之前,当使用 alias_attribute 并尝试别名用户定义的源方法时会报错,例如:

class Person
  include ActiveModel::AttributeMethods

  define_attribute_methods :name
  attr_accessor :name

  alias_attribute :full_name, :name
end

person = Person.new
person.name = "Joe Doe"
person.full_name #=> Raises error

此更改修复了 alias_attribute 的行为,使其能够正确处理用户定义的源方法。

启用 DependencyTracker 来评估带有尾部插值的渲染

<%= render "maintenance_tasks/runs/info/#{run.status}" %>

以前,DependencyTracker 会忽略此渲染,但在此更改之后,它现在会将 maintenance_tasks/runs/info 文件夹中的所有部分标记为依赖项。

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

下次再见!

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