2016-03-21 3 views
0

Für eine before_action in Rails-Engine Application Controller, wenn ein Benutzer eine Aktion von der Engine anfordert, ist die before_action ausgeführt vor routes.rb und models Motor geladen werden (oder einige Prozedur/Werkzeug, die uns die ausführende Reihenfolge herausfinden. Debug scheint die routes.rb und Modelldefinitionen übersprungen werden)? Wird before_action im Application Controller ausgeführt, bevor routes.rb und Modelle geladen werden?

class ApplicationController < ApplicationController 

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

Der Zweck setup_some_variable ist Variablen zu setzen, die in routes.rb und models im Motor verwendet werden.

Oder routes.rb oder models eines Motors werden geladen, wenn main_app gestartet wird. Hier die wichtigsten App `routes.rb‘ Montage einer Rails-Engine:

Myapp::Application.routes.draw do 

    mount MyEngine::Engine => "/my_engine" 

end 

Antwort

1

Routen werden geladen beim Anwendungsstart und Modelle werden geladen, um den Autoloader verwenden, so dass die erste Zeit, die sie in Ihrem Code verwiesen wird.

before_action wird ausgeführt, bevor eine Controlleraktion ausgeführt wird, also nachdem die Anforderung an die richtige Controlleraktion weitergeleitet wurde.

Der Rails Bootvorgang ist hier dokumentiert: https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L37

+0

Das Boot-Dokument ist eine gute Referenz. 'Modelle werden mit dem Autoloader geladen, so dass sie zum ersten Mal in Ihrem Code referenziert werden. 'Was ist normalerweise definiert, wenn ein Modell zum ersten Mal referenziert wird? Normalerweise verweisen nur die Controller auf das Modell mit Aktionen wie Index, Neu und Bearbeiten. – user938363

+0

Sind Routen und Modelle auch einmal in der App geladen und werden viele Male später benutzt? – user938363

Verwandte Themen