为什么 "action_mailer.perform_caching" 包含在 config/environments/test.rb 的请求伪造保护范围内?

Why is "action_mailer.perform_caching" included under the umbrella of request forgery protection in config/environments/test.rb?

Rails v5.1.6, Ruby 2.3.3

在我新生成的 Rails 应用程序中,我在 config/environments/test.rb 中看到以下代码:

# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false
config.action_mailer.perform_caching = false

此文件中所有相关代码部分似乎都由注释分隔,包括此部分。对我来说,这意味着这两行未注释的代码是相互关联的,并且都属于请求伪造保护的范畴(如评论中所述)。

我明白为什么像 action_controller.allow_forgery_protection 这样的行会属于这一类,但我不明白为什么 action_mailer.perform_caching 会这样。大多数其他代码行都很简单(尤其是它们各自的注释),但此文件中没有任何内容使这一行代码更加清晰,至少对我而言。

缓存电子邮件和请求伪造之间有什么联系?或者我是否错误地解释了分隔符,即电子邮件实际上 与请求伪造无关

更新: 我怀疑第二种情况可能是这种情况(即这两个概念可能不相关),因为在 config/environments/production.rb 中,同一行代码是在与请求伪造无关的配置部分中找到:

# Use a real queuing backend for Active Job (and separate queues per environment)
# config.active_job.queue_adapter     = :resque
# config.active_job.queue_name_prefix = "wms_#{Rails.env}"
config.action_mailer.perform_caching = false

但是,第二意见也不会出错。

他们没有关系。您可以在 the current (future 6.0) template source 中看到它们旨在更清楚地分开,有空行,现在甚至还有另一个不相关的设置。

缺失的空行似乎是格式错误 introduced during Rails 5.0 development,其中添加了 perform_caching,并且(因为模板格式使其不太清楚)前面的空白不是。

Comparing the generated config/environments/test.rb between 5.1.6 and 5.2.1 确认它在较新版本中看起来更好(尽管该行确实作为该文件中唯一没有匹配注释的设置之一脱颖而出)。