应用程序控制器中的 before_action 是否在 routes.rb 之前执行并加载模型?

Is before_action in application controller executed before routes.rb and models are loaded?

对于 Rails 引擎的应用程序控制器中的 before_action,当用户从引擎请求操作时,before_action 是否在引擎的 routes.rbmodels 被加载(或者一些 procedure/tool 允许我们找出执行顺序。调试似乎跳过了 routes.rb 和模型定义)?

class ApplicationController < ApplicationController

    before_action :setup_some_variable
    ..........
end

setup_some_variable的目的是设置变量,这些变量将在引擎中的routes.rbmodels中使用。

或者在启动 main_app 时加载引擎的 routes.rbmodels。这里主应用程序的 `routes.rb' 安装了一个 Rails 引擎:

Myapp::Application.routes.draw do

  mount MyEngine::Engine => "/my_engine"

end

路由在应用程序启动时加载,模型使用自动加载器加载,因此第一次在您的代码中引用它们。

before_action 运行s 在任何控制器操作之前 运行,因此在请求被路由到正确的控制器操作之后。

Rails 引导过程记录在此处:https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L37