2012-07-23 8 views
7

Mam problem z dostępem do mojego silnika szyn, który tworzę. Muszę pobrać plik konfiguracyjny yml z głównej aplikacji.Rails.root z silnika

Czy istnieją "najlepsze praktyki" w zakresie obsługi konfiguracji dla silników?

+0

Próbowałeś z 'Rails.application.root'? – shime

+0

Tak i to również zero. – sandelius

Odpowiedz

8

Załóżmy, że masz atrybut modułu dla tego.

# lib/my_engine.rb 

module MyEngine 

    mattr_accessor :app_root 

end 

Następnie można załadować go z bloku initialize tak:

# 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

Dla mnie musiało to być 'initializer' zamiast' initialize' .. (http://edgeapi.rubyonrails.org/classes/Rails/Engine.html) –

+0

tak, literówka. zaktualizowane teraz. dzięki! – shime

+0

Doskonała odpowiedź, dziękuję! – newUserNameHere

1

Zamiast używać Rails.root zastosowanie: MyEngine::Engine.root D

+0

to nie działa dla mnie. –

+0

@ dan-klasson gdzie próbujesz uzyskać dostęp? W głównej aplikacji lub w samym silniku? –

+0

W 'engine.rb'. –