星期日,2020 年 12 月 20 日

Rails 本周报:随处进行基准测试、修复 Bug 等!

用户 gregmolnar

大家好,我是 Greg,为大家带来 Rails 的最新消息!

Rails 6.1 已发布!水平分片、多数据库改进、严格加载、在后台销毁关联、错误对象等!

Rails 6.1 已发布,它拥有许多出色的功能!这些更改包括对多个数据库的改进、添加对在作业(而不是内存中)中销毁关联的支持、将错误转换为对象,以及更多功能。

添加可从任何位置调用的基准方法

此 Pull Request 将现有的 ActiveSupport::Benchmarkable 纳入 Rails 模块,以便能够从任何位置(包括后台作业)访问它。

添加 config.action_view.image_loading

浏览器对延迟加载图像的原生支持现在已成为官方 HTML 标准的一部分,此 Pull Request 添加了 Rails.application.config.action_view.image_loading 来配置 loading html 属性的站点范围默认配置,从而能够在不更改代码的情况下启用全站范围的延迟加载。

添加 config.action_view.image_decoding

另一个 image_tag 更改,它引入了 Rails.application.config.action_view.image_decoding 来配置 image_tag :decoding 选项的默认值。

更好地处理枚举中的否定元素

如果枚举方法使用 not_ 前缀,Rails 会给出一个警告,因为它可能与否定范围冲突。初始实现即使没有实际冲突也会发出警告,此更改改进了这一点,只有在存在可能导致冲突的正形式时才对负面枚举发出警告。

当 disable_with 设置为 false 时,不要使用 submit_tag 自动禁用

如果我们有 data: { disable_with: false },则自动禁用功能就会关闭,但是如果我们设置 automatically_disable_submit_tag 为 false,则会以一种意外的方式更改 disable_with 的行为,所以明确使用 disable_with: false 就会开始启用自动禁用,并使用 false 作为已禁用按钮的值。
使用此更改后,如果我们有明确的 disable_with: false,则会关闭自动禁用功能,无论 automatically_disable_submit_tag 中设置为何。

忽略通过固定装置加载的实例中的严格加载违规

Rails 6.1 添加了 strict_loading_by_default,但这会导致固定装置的问题,因为它们是延迟加载的。为了解决此问题,此更改在加载固定装置时会忽略严格加载标记。

修复阈值大于上传文件的 S3 多部分上传

当上传到 S3 的文件小于配置的多部分阈值时,会出现一个错误,但此 Pull Request 已修复了该错误。

允许 reload 成为 default_scoped

reload 默认不是 default_scoped,因为你可能正在创建一条与默认范围不匹配的记录,因此 reload 找不到该记录。但是,在对应用程序进行分片的情况下,你可能希望 reload
支持 default_scope,因为你始终拥有正确的范围
设置。 

将所有内部 job 的默认队列名称更改为 job 适配器的队列名称

以前,您需要配置作业处理器来处理 Rails 的所有内部作业队列,但这现在不再必要了!

处理 nil 翻译键

在 Rails 6.0 中,当 translate 帮助器收到 nil 键时,它始终返回 nil;而在 Rails 6.1 中,当 translate 帮助器收到 nil 键时,它始终引发 I18n::ArgumentError。此 PR 修复了 translate 帮助器,使其在收到 nil 键后反映 `I18n.translate` 的行为(无论是否设有默认值)。

45 人在过去两周中为 Rails 做出了贡献。如果您希望在下一次成为其中一员,请查看未解决问题!下周见!