2012-03-16 22 views
10

Używam aplikacji rails 3.1, która wykorzystuje silnik o nazwie "awesome_engine". Awesome_engine ma pewne zasoby aktywów, które muszę osiągnąć, ale ścieżki ładowania kompasu nie zawierają ścieżki zasobów silników. Rozumiem, że powinno tam być, ale tak nie jest.Potrzebuję pełnej ścieżki od wewnątrz aplikacji szyny

Potrzebuję dodać, więc zmodyfikowałem mój config/compass.rb, aby uwzględnić konfigurację kompasu additional_import_paths. Problemem jest to, jak uzyskać ścieżkę do wymaganego gem:

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 

To działa, ale nie ma być łatwiej/lepiej/bardziej przejrzysty sposób, aby uzyskać gem za pełną ścieżkę. Ktoś?

Odpowiedz

25

Gem.loaded_specs jest to, co chciałem:

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" 
Powiązane problemy