关于 ruby?? on rails 4:应用程序控制器中的 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 加载之前执行的(或者一些允许我们的过程/工具找出执行顺序。调试似乎跳过了 routes.rb 和模型定义)?

1
2
3
4
5
class ApplicationController < ApplicationController

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

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

或引擎的 routes.rbmodelsmain_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