2012-07-23 15 views
7

Tengo algún problema para acceder al Rails.root desde el motor de mis raíles, que estoy creando. Necesito buscar un archivo de configuración yml desde la aplicación principal.Rails.root del motor

¿Hay alguna "mejores prácticas" para manejar las configuraciones de sus motores?

+0

¿trató con 'Rails.application.root'? – shime

+0

Sí y eso también es nulo. – sandelius

Respuesta

8

Supongamos que tiene un atributo de módulo para eso.

# lib/my_engine.rb 

module MyEngine 

    mattr_accessor :app_root 

end 

A continuación, puede cargarlo desde el bloque de inicialización de este modo:

# 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

Para mí, tenía que ser 'initializer' en lugar de' initialize' .. (http://edgeapi.rubyonrails.org/classes/Rails/Engine.html) –

+0

sí, error ortográfico. actualizado ahora ¡Gracias! – shime

+0

¡Excelente respuesta, gracias! – newUserNameHere

1

usar en su lugar Rails.root uso: MyEngine::Engine.root; D

+0

esto no funcionó para mí. –

+0

@ dan-klasson ¿A dónde estás tratando de acceder? Dentro de la aplicación principal o dentro del motor en sí? –

+0

En 'engine.rb'. –

Cuestiones relacionadas