それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

require されるgem パッケージのフルパス(場所)を取得する

require した時のパッケージが実体どこにあるか知りたい時があります。

たとえば、ライブラリの本体パスを知ることでmanual やサンプルにアクセすることが可能だからです。

Gemのファイルの場所を調べよう。

取得方法

Gem::Specification.find_by_path( "gem 名" ).full_gem_path

実行サンプル

(%w/bitly airplay flickr git oauth2 sinatra/).map{|e|
  path =  Gem::Specification.find_by_path( e ).full_gem_path
  puts "#{e.ljust(10)} : #{path}"
}
takuya@rena:~/Desktop$ ruby test.rb
bitly      : /Users/takuya/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/bitly-0.10.1
airplay    : /Users/takuya/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/airplay-1.0.2
flickr     : /Users/takuya/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/flickr-1.0.2
git        : /Users/takuya/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/git-1.2.6
oauth2     : /Users/takuya/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/oauth2-0.9.3
sinatra    : /Users/takuya/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sinatra-1.4.5

ただし

gem パッケージの実態に限ります。標準添付ライブラリと組み込みオブジェクトは gem 管理対象外なのでGem::specification で取ることは出来ない。

ドキュメントが欲しいなら

ri Mechanize

でも可能です。

参考資料

http://docs.ruby-lang.org/ja/2.1.0/class/Gem=3a=3aSpecification.html#I_FULL_GEM_PATH