Class Gem::Commands::WhichCommand
In: lib/rubygems/commands/which_command.rb
Parent: Gem::Command

Methods

execute   find_paths   gem_paths   new  

Constants

EXT = %w[.rb .rbw .so .dll .bundle]

Public Class methods

[Source]

    # File lib/rubygems/commands/which_command.rb, line 8
 8:   def initialize
 9:     super 'which', 'Find the location of a library file you can require',
10:           :search_gems_first => false, :show_all => false
11: 
12:     add_option '-a', '--[no-]all', 'show all matching files' do |show_all, options|
13:       options[:show_all] = show_all
14:     end
15: 
16:     add_option '-g', '--[no-]gems-first',
17:                'search gems before non-gems' do |gems_first, options|
18:       options[:search_gems_first] = gems_first
19:     end
20:   end

Public Instance methods

[Source]

    # File lib/rubygems/commands/which_command.rb, line 30
30:   def execute
31:     searcher = Gem::GemPathSearcher.new
32: 
33:     found = false
34: 
35:     options[:args].each do |arg|
36:       arg = arg.sub(/#{Regexp.union(*EXT)}$/, '')
37:       dirs = $LOAD_PATH
38:       spec = searcher.find arg
39: 
40:       if spec then
41:         if options[:search_gems_first] then
42:           dirs = gem_paths(spec) + $LOAD_PATH
43:         else
44:           dirs = $LOAD_PATH + gem_paths(spec)
45:         end
46:       end
47: 
48:       paths = find_paths arg, dirs
49: 
50:       if paths.empty? then
51:         alert_error "Can't find ruby library file or shared library #{arg}"
52:       else
53:         say paths
54:         found = true
55:       end
56:     end
57: 
58:     terminate_interaction 1 unless found
59:   end

[Source]

    # File lib/rubygems/commands/which_command.rb, line 61
61:   def find_paths(package_name, dirs)
62:     result = []
63: 
64:     dirs.each do |dir|
65:       EXT.each do |ext|
66:         full_path = File.join dir, "#{package_name}#{ext}"
67:         if File.exist? full_path then
68:           result << full_path
69:           return result unless options[:show_all]
70:         end
71:       end
72:     end
73: 
74:     result
75:   end

[Source]

    # File lib/rubygems/commands/which_command.rb, line 77
77:   def gem_paths(spec)
78:     spec.require_paths.collect { |d| File.join spec.full_gem_path, d }
79:   end

[Validate]