Skip to Content Skip to Search

Cleans up after a partially-failed uninstall or for an invalid Gem::Specification.

If a specification was removed by hand this will remove any remaining files.

If a corrupt specification was installed this will clean up warnings by removing the bogus specification.

Methods
D
G
N
Included Modules

Class Public methods

new(gem_repository, dry_run = false)

Creates a new Gem::Doctor that will clean up gem_repository. Only one gem repository may be cleaned at a time.

If dry_run is true no files or directories will be removed.

# File ruby/lib/rubygems/doctor.rb, line 45
def initialize(gem_repository, dry_run = false)
  @gem_repository = gem_repository
  @dry_run        = dry_run

  @installed_specs = nil
end

Instance Public methods

doctor()

Cleans up uninstalled files and invalid gem specifications

# File ruby/lib/rubygems/doctor.rb, line 69
def doctor
  @orig_home = Gem.dir
  @orig_path = Gem.path

  say "Checking #{@gem_repository}"

  Gem.use_paths @gem_repository.to_s

  unless gem_repository?
    say "This directory does not appear to be a RubyGems repository, " \
        "skipping"
    say
    return
  end

  doctor_children

  say
ensure
  Gem.use_paths @orig_home, *@orig_path
end

gem_repository?()

Are we doctoring a gem repository?

# File ruby/lib/rubygems/doctor.rb, line 62
def gem_repository?
  !installed_specs.empty?
end