2012-07-23 5 views
7

Ich habe ein Problem beim Zugriff auf Rails.root von meinem Rails-Engine, die ich erstelle. Ich muss eine Yml Config-Datei von der Haupt-App holen.Rails.root vom Motor

Gibt es Best Practices für die Handhabung von Konfigurationen für Ihre Motoren?

+0

hast du mit 'Rails.application.root' versuchen? – shime

+0

Ja und das ist auch nichts. – sandelius

Antwort

8

Nehmen wir an, Sie haben ein Modul-Attribut dafür.

# lib/my_engine.rb 

module MyEngine 

    mattr_accessor :app_root 

end 

Dann können Sie es aus dem initialize Block wie so laden:

# lib/my_engine/engine.rb 

module MyEngine 

    class Engine < Rails::Engine 

    initializer "my_engine.load_app_root" do |app| 

     MyEngine.app_root = app.root 

    end 

    end 

end 
+0

Für mich musste es "Initialisierer" statt "initialisieren" .. (http://edgeapi.rubyonrails.org/classes/Rails/Engine.html) –

+0

ja, Tippfehler. jetzt aktualisiert. Vielen Dank! – shime

+0

Ausgezeichnete Antwort, danke! – newUserNameHere

1

Statt Rails.root Gebrauch verwenden: MyEngine::Engine.root; D

+0

das hat nicht für mich funktioniert. –

+0

@ dan-klasson wo versuchst du zuzugreifen? In der Haupt-App oder in der Engine selbst? –

+0

In 'engine.rb'. –

Verwandte Themen