diff options
Diffstat (limited to 'lib/rubygems/commands/cleanup_command.rb')
-rw-r--r-- | lib/rubygems/commands/cleanup_command.rb | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/rubygems/commands/cleanup_command.rb b/lib/rubygems/commands/cleanup_command.rb index 46f89f1bb8..83ee6b5c7c 100644 --- a/lib/rubygems/commands/cleanup_command.rb +++ b/lib/rubygems/commands/cleanup_command.rb @@ -76,6 +76,9 @@ If no gems are named all gems in GEM_HOME are cleaned. end def clean_gems + @original_home = Gem.dir + @original_path = Gem.path + get_primary_gems get_candidate_gems get_gems_to_cleanup @@ -87,9 +90,6 @@ If no gems are named all gems in GEM_HOME are cleaned. deps = deplist.strongly_connected_components.flatten - @original_home = Gem.dir - @original_path = Gem.path - deps.reverse_each do |spec| uninstall_dep spec end @@ -108,6 +108,7 @@ If no gems are named all gems in GEM_HOME are cleaned. end def get_gems_to_cleanup + gems_to_cleanup = @candidate_gems.select { |spec| @primary_gems[spec.name].version != spec.version } @@ -116,6 +117,10 @@ If no gems are named all gems in GEM_HOME are cleaned. spec.default_gem? } + gems_to_cleanup = gems_to_cleanup.select { |spec| + spec.base_dir == @original_home + } + @default_gems += default_gems @default_gems.uniq! @gems_to_cleanup = gems_to_cleanup.uniq |