您好!我是Emmanuel Hayford,为您带来每周的“本周 Rails 快讯”。我们直接开始吧。 两个新指南现已开放社区评审。如果您精通 Action View、partial 和 helper,请在此处进行评审并提交您的反馈
添加 config.active_record.permanent_connection_checkout 设置
此设置决定了在访问 ActiveRecord::Base.connection 时采取的操作:是引发错误、发出弃用警告,还是什么都不做。
ActiveRecord::Base.connection 会从连接池获取数据库连接,并一直保持到请求或作业结束。然而,在线程或协程数量多于可用连接的环境中,此行为可能会适得其反。
此配置有助于识别和消除使用 ActiveRecord::Base.connection 的代码,鼓励改用 ActiveRecord::Base.with_connection。默认行为保持不变。
使 ActiveSupport::BacktraceCleaner 在 dup 时复制 filters
增强 ActiveSupport::BacktraceCleaner 以在复制和克隆时复制 filters 和 silencers。
以前,复制后内部的 silencers 和 filters 数组仍然是共享的,导致状态泄露。
确保将必要的选项添加到关联选项中
注意到 :through 中的拼写错误,请参考以下代码示例
class User < ApplicationRecord
has_many :courses
has_many :assignments, trough: :courses
end
您将收到类似以下内容的误导性错误消息:
“未知键::trough。有效键为::class_name, :anonymous_class, :primary_key, …, :index_errors (ArgumentError)”,
通过此拉取请求,您现在将收到更清晰的消息,类似于:
“未知键::trough。有效键为::class_name, :anonymous_class, :primary_key, …, :index_errors, :through (ArgumentError)”。
请注意,在第二个错误消息中,:through 已包含在有效选项列表中。
在与连接相关的异常情况下重试已知幂等的 SELECT 查询
实现一种机制,在发生与连接相关的异常时自动重试已知是幂等的 SELECT 查询。
通过 Arel 树遍历或基于已知模型属性构造的查询本质上是幂等的,并且在遇到连接错误时可以安全地重试。以前,像 TrilogyAdapter 这样的某些适配器在请求期间遇到连接错误时会引发 ActiveRecord::ConnectionFailed: Trilogy::EOFError。
上周,我们有 22 位贡献者为 Rails 代码库做出了贡献!
请保重。
每周为您提供来自 Rails 的有趣提交、拉取请求等方面的内部快讯。
订阅以通过邮件获取这些更新。