class Gem::Commands::WhichCommand
Public Class Methods
new
()
Calls superclass method
Gem::Command::new
# File lib/rubygems/commands/which_command.rb, line 6 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
Public Instance Methods
execute
()
# File lib/rubygems/commands/which_command.rb, line 39 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
find_paths
(package_name, dirs)
# File lib/rubygems/commands/which_command.rb, line 69 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) && !File.directory?(full_path) result << full_path return result unless options[:show_all] end end end result end