Support for the Ruby 2.4 series has ended. See here for reference.
![show/hide quicksearch [+]](../../images/find.png)
 
               # File rubygems/commands/contents_command.rb, line 10
def initialize
  super 'contents', 'Display the contents of the installed gems',
        :specdirs => [], :lib_only => false, :prefix => true,
        :show_install_dir => false
  add_version_option
  add_option(      '--all',
             "Contents for all gems") do |all, options|
    options[:all] = all
  end
  add_option('-s', '--spec-dir a,b,c', Array,
             "Search for gems under specific paths") do |spec_dirs, options|
    options[:specdirs] = spec_dirs
  end
  add_option('-l', '--[no-]lib-only',
             "Only return files in the Gem's lib_dirs") do |lib_only, options|
    options[:lib_only] = lib_only
  end
  add_option(      '--[no-]prefix',
             "Don't include installed path prefix") do |prefix, options|
    options[:prefix] = prefix
  end
  add_option(      '--[no-]show-install-dir',
             'Show only the gem install dir') do |show, options|
    options[:show_install_dir] = show
  end
  @path_kind = nil
  @spec_dirs = nil
  @version   = nil
end
             
             
               # File rubygems/commands/contents_command.rb, line 67
def execute
  @version   = options[:version] || Gem::Requirement.default
  @spec_dirs = specification_directories
  @path_kind = path_description @spec_dirs
  names = gem_names
  names.each do |name|
    found =
      if options[:show_install_dir] then
        gem_install_dir name
      else
        gem_contents name
      end
    terminate_interaction 1 unless found or names.length > 1
  end
end
             
             
               # File rubygems/commands/contents_command.rb, line 86
def files_in spec
  if spec.default_gem? then
    files_in_default_gem spec
  else
    files_in_gem spec
  end
end
             
             
               # File rubygems/commands/contents_command.rb, line 105
def files_in_default_gem spec
  spec.files.map do |file|
    case file
    when /\A#{spec.bindir}\//
      [RbConfig::CONFIG['bindir'], $POSTMATCH]
    when /\.so\z/
      [RbConfig::CONFIG['archdir'], file]
    else
      [RbConfig::CONFIG['rubylibdir'], file]
    end
  end
end
             
             
               # File rubygems/commands/contents_command.rb, line 94
def files_in_gem spec
  gem_path  = spec.full_gem_path
  extra     = "/{#{spec.require_paths.join ','}}" if options[:lib_only]
  glob      = "#{gem_path}#{extra}/**/*"
  prefix_re = /#{Regexp.escape(gem_path)}\//
  Dir[glob].map do |file|
    [gem_path, file.sub(prefix_re, "")]
  end
end
             
             
               # File rubygems/commands/contents_command.rb, line 118
def gem_contents name
  spec = spec_for name
  return false unless spec
  files = files_in spec
  show_files files
  true
end
             
             
               # File rubygems/commands/contents_command.rb, line 130
def gem_install_dir name
  spec = spec_for name
  return false unless spec
  say spec.gem_dir
  true
end
             
             
               # File rubygems/commands/contents_command.rb, line 156
def show_files files
  files.sort.each do |prefix, basename|
    absolute_path = File.join(prefix, basename)
    next if File.directory? absolute_path
    if options[:prefix] then
      say absolute_path
    else
      say basename
    end
  end
end
             
             
               # File rubygems/commands/contents_command.rb, line 169
def spec_for name
  spec = Gem::Specification.find_all_by_name(name, @version).last
  return spec if spec
  say "Unable to find gem '#{name}' in #{@path_kind}"
  if Gem.configuration.verbose then
    say "\nDirectories searched:"
    @spec_dirs.sort.each { |dir| say dir }
  end
  return nil
end