2016-06-02 11 views
0

Gibt es eine Möglichkeit, automatisch Modelle von einer externen Rails Engine in einer Rails-App anzufordern, ohne explizit auf den Pfad der Engine zu verweisen (in meinem Fall ein hässlicher relativer Pfad)?Benötigt Rails-Engine-Modelle in Referenzierungsanwendung

Ich versuche, eine automatische Generierung von Dekorator für eine Reihe von Unterklassen hinzuzufügen, die in der Engine definiert sind, aber BaseClass.descendents listet nur Nachkommen auf, die bereits benötigt wurden.

EDIT: Einige weitere Details-ich eine Rails-Engine haben, die eine Reihe von Modellen definiert:

class BaseModel < ActiveRecord::Base 
end 
class FirstSubmodel < BaseModel 
end 
class Second Submodel 
end 

Der Motor in einer anderen Rails-Projekt Gemfile verwiesen wird, etwa so:

gem 'my_engine', path: '.../.../plugins/my_engine' 

Die Das Rails-Projekt muss bei der Initialisierung automatisch Dekoratoren für jedes der Submodelle erzeugen, wie zum Beispiel:

BaseModel.descendants.each {|descendant| generate_decorator(descendant)} 

"Nachkommen" gibt jedoch ein leeres Array zurück, da FirstSubmodel und SecondSubmodel noch nicht geladen wurden.

+0

könnten Sie bitte mit Ihrer vorhandenen Implementierung erarbeiten. –

Antwort

0

landete ich MyEngine :: Engine.root mit bis, etwa so:

Dir.glob(MyEngine::Engine.root + "app/models/*_submodel.rb").each { |c| require c }