Parent

Methods

Included Modules

Class Index [+]

Quicksearch

Gem::Commands::PristineCommand

Public Class Methods

new() click to toggle source
    # File lib/rubygems/commands/pristine_command.rb, line 10
10:   def initialize
11:     super 'pristine',
12:           'Restores installed gems to pristine condition from files located in the gem cache',
13:           :version => Gem::Requirement.default, :extensions => true,
14:           :all => false
15: 
16:     add_option('--all',
17:                'Restore all installed gems to pristine',
18:                'condition') do |value, options|
19:       options[:all] = value
20:     end
21: 
22:     add_option('--[no-]extensions',
23:                'Restore gems with extensions') do |value, options|
24:       options[:extensions] = value
25:     end
26: 
27:     add_version_option('restore to', 'pristine condition')
28:   end

Public Instance Methods

execute() click to toggle source
     # File lib/rubygems/commands/pristine_command.rb, line 59
 59:   def execute
 60:     specs = if options[:all] then
 61:               Gem::Specification.map
 62:             else
 63:               get_all_gem_names.map do |gem_name|
 64:                 Gem::Specification.find_all_by_name gem_name, options[:version]
 65:               end.flatten
 66:             end
 67: 
 68:     if specs.to_a.empty? then
 69:       raise Gem::Exception,
 70:             "Failed to find gems #{options[:args]} #{options[:version]}"
 71:     end
 72: 
 73:     install_dir = Gem.dir # TODO use installer option
 74: 
 75:     raise Gem::FilePermissionError.new(install_dir) unless
 76:       File.writable?(install_dir)
 77: 
 78:     say "Restoring gems to pristine condition..."
 79: 
 80:     specs.each do |spec|
 81:       unless spec.extensions.empty? or options[:extensions] then
 82:         say "Skipped #{spec.full_name}, it needs to compile an extension"
 83:         next
 84:       end
 85: 
 86:       gem = spec.cache_file
 87: 
 88:       unless File.exist? gem then
 89:         require 'rubygems/remote_fetcher'
 90: 
 91:         say "Cached gem for #{spec.full_name} not found, attempting to fetch..."
 92:         dep = Gem::Dependency.new spec.name, spec.version
 93:         Gem::RemoteFetcher.fetcher.download_to_cache dep
 94:       end
 95: 
 96:       # TODO use installer options
 97:       installer = Gem::Installer.new(gem,
 98:                                      :wrappers => true,
 99:                                      :force => true,
100:                                      :install_dir => spec.base_dir)
101:       installer.install
102: 
103:       say "Restored #{spec.full_name}"
104:     end
105:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.