我正在运行一个使用名为'awesome_engine'的引擎的rails 3.1应用程序。 Awesome_engine有一些我需要的资产,但罗盘的负载路径不包括引擎资产路径。我的理解是它应该存在,但事实并非如此。
我需要添加它,所以我修改了config / compass.rb以包含指南针的additional_import_paths配置设置。问题是,这就是我获得所需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
这有效,但必须有一个更容易/更好/更清洁的方式来获得宝石的完整路径。任何人吗?
答案 0 :(得分:26)
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/ruby-1.9.2-p290@foobar/gems/rails-3.1.3"