Is before_action in application controller executed before routes.rb and models are loaded?
对于 Rails 引擎的应用程序控制器中的 before_action,当用户向引擎请求操作时,before_action 是在引擎的 routes.rb 和 models 加载之前执行的(或者一些允许我们的过程/工具找出执行顺序。调试似乎跳过了 routes.rb 和模型定义)?
1 2 3 4 5
| class ApplicationController < ApplicationController
before_action :setup_some_variable
..........
end |
setup_some_variable 的目的是设置将在引擎中的routes.rb 和models 中使用的变量。
或引擎的 routes.rb 和 models 在 main_app 启动时被加载。这里主要应用程序的 `routes.rb' 安装了一个 Rails 引擎:
1 2 3 4 5
| Myapp::Application.routes.draw do
mount MyEngine::Engine =>"/my_engine"
end |
路由在应用程序启动时加载,模型是使用自动加载器加载的,因此在您的代码中第一次引用它们时。
before_action 在任何控制器操作运行之前运行,因此在请求被路由到正确的控制器操作之后。
Rails 启动过程记录在这里:https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L37
- 引导文档是一个很好的参考。 models are loaded using the Autoloader so the first time they are referenced in your code,通常什么定义为第一次引用模型?通常只有控制器会通过索引、新建和编辑等操作引用模型。
-
路由和模型定义是否在应用程序中加载一次并在以后多次使用?