2012-03-16 10 views
10

私は 'awesome_engine'というエンジンを使用しているレール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"