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

时间:2016-03-21 19:34:07

标签: ruby-on-rails-4 rails-engines

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

class ApplicationController < ApplicationController

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

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

启动routes.rb时会加载引擎的modelsmain_app。这里主应用程序的`routes.rb'安装了Rails引擎:

Myapp::Application.routes.draw do

  mount MyEngine::Engine => "/my_engine"

end

1 个答案:

答案 0 :(得分:1)

在应用程序启动时加载路由,并使用Autoloader加载模型,以便第一次在代码中引用它们。

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

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