你好,我是Greg,为你带来最新的 Rails 新闻!
Rails 6.1 已发布,里面有很多很棒的新功能!本次更新包括多数据库的改进,增加了在作业中销毁关联(而不是在内存中)的支持,将错误转换为对象,以及更多内容。
此 PR 将现有的 ActiveSupport::Benchmarkable 引入 Rails 模块,以便从任何地方(后台作业等)都可以访问它。
浏览器原生支持延迟加载图片现已成为官方 HTML 标准的一部分,此 PR 添加了 Rails.application.config.action_view.image_loading,用于配置全站默认的 loading HTML 属性,从而无需更改代码即可在全站启用延迟加载。
另一个 image_tag 的变更,它引入了 Rails.application.config.action_view.image_decoding,用于配置 image_tag 的 :decoding 选项的默认值。
如果 enum 方法使用了 not_ 前缀,Rails 会发出警告,因为它可能与负数作用域发生冲突。最初的实现即使没有实际冲突也会发出警告,本次更改改进了这一点,仅在存在可能引起冲突的正数形式时才会警告负数 enum。
如果我们有 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_,但这会导致 fixture 因其惰性加载而出现问题。为了解决这个问题,此更改在加载 fixture 时会忽略严格加载标志。
当上传到 S3 的文件小于配置的分片上传阈值时,会发生一个 bug,但此 PR 修复了它。
reload 默认情况下不是 default_scoped 的,因为你可能正在创建一个不匹配默认作用域的记录,因此 reload 找不到该记录。但是,在分片应用程序的情况下,你可能希望 reload
支持 default_scope,因为你将始终拥有正确的作用域
设置。
在此更改之前,你需要配置你的作业处理器来处理 Rails 的所有内部作业队列,但现在不再需要了!
在 Rails 6.0 中,translate 助手在给定 nil 键时总是返回 nil,但在 Rails 6.1 中,translate 助手在给定 nil 键时总是抛出 I18n::ArgumentError。此 PR 修复了 translate 助手,使其在给定 nil 键时(无论是否有默认值)的行为与 I18n.translate 保持一致。
在过去的 2 周内,有45 位贡献者为 Rails 做出了贡献。如果你想成为下一批贡献者,请查看待处理的 issue!下周再见!