Rubyのライブラリ検索

ロードパスにあるライブラリのパスを表示。

#!/usr/bin/ruby -Ku
require 'rbconfig'

def lib_list(name)
  $:.each do |path|
    next unless FileTest.directory?(path)
    dlext = RbConfig::CONFIG["DLEXT"]
    Dir.open(path) do |dir|
      dir.each do |file|
        if file =~ /\.rb$/i || file =~ /\.#{dlext}$/i
          puts "#{path}/#{file}" if file =~ /#{name}/i
          puts "#{path}/#{file}" unless name
        end
      end
    end
  end
end

lib_list(ARGV[0] || nil)

こんな感じ。

$ ./lib_list.rb WEBrick 
/usr/lib/ruby/1.8/webrick.rb
$ ./lib_list.rb Stringio
/usr/lib/ruby/1.8/i486-linux/stringio.so