インストールされているファイルを探索する
Gem#find_filesを使うと、指定したパスにマッチするファイルを探索できます。
- パスにはワイルドカードが使えます。(Gem::GemPathSearcherと同じく、Dir#globしている様子。)
- 同じGemの別バージョンに含まれるファイルは、それぞれ別のファイルとしてヒットするので注意。
require 'rubygems' # パスにマッチするファイルの配列を取得 puts Gem.find_files( 'httpclient.rb' ) # これもワイルドカードが使える。 puts '---' puts Gem.find_files( 'h*' ) puts '---' puts Gem.find_files( '**/*client.rb' )
実行結果です。
/usr/lib/ruby/gems/1.8/gems/httpclient-2.1.4/lib/httpclient.rb /usr/lib/ruby/gems/1.8/gems/httpclient-2.1.2/lib/httpclient.rb --- /usr/lib/ruby/gems/1.8/gems/highline-1.5.0/lib/highline.rb /usr/lib/ruby/gems/1.8/gems/hoe-1.11.0/lib/hoe.rb /usr/lib/ruby/gems/1.8/gems/hoe-1.10.0/lib/hoe.rb /usr/lib/ruby/gems/1.8/gems/hoe-1.9.0/lib/hoe.rb /usr/lib/ruby/gems/1.8/gems/hoe-1.5.1/lib/hoe.rb /usr/lib/ruby/gems/1.8/gems/hpricot-0.6/lib/i686-linux/hpricot_scan.so /usr/lib/ruby/gems/1.8/gems/hpricot-0.6/lib/hpricot.rb /usr/lib/ruby/gems/1.8/gems/httpclient-2.1.4/lib/http-access2.rb /usr/lib/ruby/gems/1.8/gems/httpclient-2.1.4/lib/httpclient.rb /usr/lib/ruby/gems/1.8/gems/httpclient-2.1.2/lib/http-access2.rb /usr/lib/ruby/gems/1.8/gems/httpclient-2.1.2/lib/httpclient.rb /usr/lib/ruby/gems/1.8/gems/rubyforge-0.4.5/lib/http-access2.rb --- /usr/lib/ruby/site_ruby/1.8/svn/client.rb /usr/lib/ruby/1.8/xmlrpc/client.rb /usr/lib/ruby/gems/1.8/gems/clickclient-0.0.2/lib/clickclient.rb /usr/lib/ruby/gems/1.8/gems/httpclient-2.1.4/lib/httpclient.rb /usr/lib/ruby/gems/1.8/gems/httpclient-2.1.2/lib/httpclient.rb /usr/lib/ruby/gems/1.8/gems/rubyforge-1.0.3/lib/rubyforge/client.rb