2012-03-16 6 views
10

Estoy ejecutando una aplicación Rails 3.1 que utiliza un motor llamado 'awesome_engine'. Awesome_engine tiene algunas cosas de activos que necesito conseguir, pero las rutas de carga de brújula no incluyen la ruta de los activos de los motores. Entiendo que debería estar allí, pero no lo es.Necesito una ruta completa de gems desde dentro de una aplicación de rieles

Necesito agregarlo, así que modifiqué mi config/compás.rb para incluir la configuración de configuración additional_import_paths de la brújula. El problema es, así es como me sale el camino hacia la gema requerido:

begin 
    gem_root = $LOAD_PATH.find{|i| i.include?('/awesome_engine/')}.gsub(/awesome_engine\/.*/, 'awesome_engine/app/assets/stylesheets/scss') 
    additional_import_paths = [gem_root] 
rescue 
end 

Esto funciona, pero no tiene que ser una manera más fácil/mejor/más limpio para obtener la ruta completa de una joya. ¿Nadie?

Respuesta

25

Gem.loaded_specs es lo que quería:

ruby-1.9.2-p290 :001 > Gem.loaded_specs['awesome_engine'].full_gem_path 
=> "/Users/younker/dev/engines/awesome_engine" 

ruby-1.9.2-p290 :002 > Gem.loaded_specs['rails'].full_gem_path 
=> "/Users/younker/.rvm/gems/[email protected]/gems/rails-3.1.3" 
Cuestiones relacionadas