remove(spec)
public
spec |
the spec of the gem to be uninstalled
|
list |
the list of all such gems
|
Warning: this method modifies the list
parameter. Once it has uninstalled a gem, it is removed from that list.
# File lib/rubygems/uninstaller.rb, line 240
def remove(spec)
unless path_ok?(@gem_home, spec) or
(@user_install and path_ok?(Gem.user_dir, spec)) then
e = Gem::GemNotInHomeException.new "Gem '#{spec.full_name}' is not installed in directory #{@gem_home}"
e.spec = spec
raise e
end
raise Gem::FilePermissionError, spec.base_dir unless
File.writable?(spec.base_dir)
FileUtils.rm_rf spec.full_gem_path
FileUtils.rm_rf spec.extension_dir
old_platform_name = spec.original_name
gemspec = spec.spec_file
unless File.exist? gemspec then
gemspec = File.join(File.dirname(gemspec), "#{old_platform_name}.gemspec")
end
FileUtils.rm_rf gemspec
gem = spec.cache_file
gem = File.join(spec.cache_dir, "#{old_platform_name}.gem") unless
File.exist? gem
FileUtils.rm_rf gem
Gem::RDoc.new(spec).remove
say "Successfully uninstalled #{spec.full_name}"
Gem::Specification.reset
end