ruby-on-rails - 为什么“action_mailer.perform_caching”包含在 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
但是,第二意见不会出错。
解决方案
他们无关。您可以在当前(未来的 6.0)模板源代码中看到,它们旨在更加清晰地分开,带有空白行,现在甚至还有另一个不相关的设置。
缺少的空白行似乎是在 Rails 5.0 开发期间引入的格式错误,其中perform_caching
添加了,并且(因为模板格式不太清楚)前面的空白不是。
比较生成config/environments/test.rb
的 5.1.6 和 5.2.1确认它在新版本中看起来更好(尽管该行确实是该文件中唯一没有匹配注释的设置之一)。
推荐阅读
- terraform - 使用模块时将输出转发到标准输出
- c# - 检查链表是否
> 包含某个节点 - c++ - 将未知大小的向量传递给函数
- c# - C# StreamWriter如何将文件格式化为类别
- python - 有没有办法使用 Python API for Trello 邀请成员加入董事会?
- kotlin - 在 Kotlin 中读取所有输入行的简洁方式
- d3.js - 使用 d3.zoom d3 v4 拖动时图表跳转
- android - NULL 窗口插图
- sql - 如何从数据库中选择真实的
- node.js - 安装 quill-image-resize-module 会导致在其中创建带有许多模块的“node_modules”