![show/hide quicksearch [+]](../../images/find.png)
 
               # File rubygems/commands/which_command.rb, line 5
def initialize
  super 'which', 'Find the location of a library file you can require',
        :search_gems_first => false, :show_all => false
  add_option '-a', '--[no-]all', 'show all matching files' do |show_all, options|
    options[:show_all] = show_all
  end
  add_option '-g', '--[no-]gems-first',
             'search gems before non-gems' do |gems_first, options|
    options[:search_gems_first] = gems_first
  end
end
             
             
               # File rubygems/commands/which_command.rb, line 38
def execute
  found = true
  options[:args].each do |arg|
    arg = arg.sub(/#{Regexp.union(*Gem.suffixes)}$/, '')
    dirs = $LOAD_PATH
    spec = Gem::Specification.find_by_path arg
    if spec
      if options[:search_gems_first]
        dirs = spec.full_require_paths + $LOAD_PATH
      else
        dirs = $LOAD_PATH + spec.full_require_paths
      end
    end
    paths = find_paths arg, dirs
    if paths.empty?
      alert_error "Can't find Ruby library file or shared library #{arg}"
      found = false
    else
      say paths
    end
  end
  terminate_interaction 1 unless found
end
             
             
               # File rubygems/commands/which_command.rb, line 68
def find_paths(package_name, dirs)
  result = []
  dirs.each do |dir|
    Gem.suffixes.each do |ext|
      full_path = File.join dir, "#{package_name}#{ext}"
      if File.exist? full_path and not File.directory? full_path
        result << full_path
        return result unless options[:show_all]
      end
    end
  end
  result
end