2012-03-16 75 views
10

我正在運行一個使用名爲'awesome_engine'的引擎的rails 3.1應用程序。 Awesome_engine有一些我需要的資產,但羅盤的加載路徑不包含引擎資產路徑。我的理解是它應該在那裏,但事實並非如此。我需要從軌道應用程序內的寶石完整路徑

我需要添加它,所以我修改了我的config/compass.rb以包含指南針的additional_import_paths配置設置。問題是,這是我得到的路徑所需的寶石:

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 

這工作,但那裏一定是一個更容易/更好/更清潔的方式來獲得寶石的完整路徑。任何人?

回答

25

Gem.loaded_specs是我想要的東西:

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"