对于Rails引擎的应用程序控制器中的before_action
,当用户向引擎请求操作时,before_action
是否在加载引擎routes.rb
和models
之前执行({1}}或者一些允许我们找出执行顺序的程序/工具。调试似乎是在跳过routes.rb和模型定义)?
class ApplicationController < ApplicationController
before_action :setup_some_variable
..........
end
setup_some_variable
的目的是设置将在引擎中routes.rb
和models
中使用的变量。
启动routes.rb
时会加载引擎的models
和main_app
。这里主应用程序的`routes.rb'安装了Rails引擎:
Myapp::Application.routes.draw do
mount MyEngine::Engine => "/my_engine"
end
答案 0 :(得分:1)
在应用程序启动时加载路由,并使用Autoloader加载模型,以便第一次在代码中引用它们。
before_action
在任何控制器操作运行之前运行,因此在请求被路由到正确的控制器操作之后。
Rails启动过程在此处记录:https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L37