2016-03-21 5 views
0

Railsエンジンのアプリケーションコントローラのbefore_actionの場合、ユーザがエンジンからアクションを要求すると、routes.rbmodelsがロードされる前にbefore_actionが実行されます(または実行順序を見つけるための手続き/ツールです。 routes.rbとモデル定義をスキップする)?routes.rbとモデルがロードされる前にアプリケーションコントローラのbefore_actionが実行されていますか?

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 

答えて

1

ルートは、アプリケーションの起動時にロードされ、モデルは、彼らはあなたのコードで参照されている最初の時間ので、オートローダを使用してロードされます。

before_actionコントローラのアクションが実行される前に実行されるため、要求が正しいコントローラアクションにルーティングされた後に実行されます。

Railsの起動プロセスは、ここでは文書化されていますhttps://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L37

+0

ブート文書は良い参考です。 'モデルはAutoloaderを使ってロードされるので、あなたのコードで最初に参照されます.'通常、モデルを初めて参照するときに定義されるのは何ですか?通常は、コントローラーだけが、index、new、editなどのアクションでモデルを参照します。 – user938363

+0

また、ルートとモデルの定義はアプリで一度読み込まれ、後で何度も使用されますか? – user938363

関連する問題