2024 年 9 月 13 日,星期五

默认使用 Solid Cable,2 个新的 Guides PR,以及更多内容!

作者:vipulnsward

大家好,祝大家周五愉快!🎃

我是 Vipul,本周将带来最新的 Rails 周报,来自本周精彩的 EuRuKo!让我们开始吧。

新的 Guides Pull Request 供审查
本周有两个新的 Guides Pull Request 等待社区审查。如果您精通 Action Mailer 或错误报告,请在此处查看并提交您的反馈

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

这样就可以放弃对 Redis 的常见依赖,如果 Redis 没有用于任何其他目的。尽管进行了轮询,但 Solid Cable 的性能在大多数情况下与 Redis 相当。在所有情况下,当 Redis 不再是 Action Cable 功能的必要依赖项时,它使部署 Rails 变得更加容易。

弃用 Benchmark.ms 并将基准添加到 gemspec
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 文件夹中的所有部分标记为依赖项。

您可以查看完整的更改列表 这里 过去一周,Rails 代码库有 28 位贡献者

下次再见!

订阅 以接收这些更新的邮件。