Class | Gem::Commands::InstallCommand |
In: |
lib/rubygems/commands/install_command.rb
|
Parent: | Gem::Command |
# File lib/rubygems/commands/install_command.rb, line 20 20: def initialize 21: defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge({ 22: :generate_rdoc => true, 23: :generate_ri => true, 24: :format_executable => false, 25: :test => false, 26: :version => Gem::Requirement.default, 27: }) 28: 29: super 'install', 'Install a gem into the local repository', defaults 30: 31: add_install_update_options 32: add_local_remote_options 33: add_platform_option 34: add_version_option 35: add_prerelease_option "to be installed. (Only for listed gems)" 36: end
# File lib/rubygems/commands/install_command.rb, line 105 105: def execute 106: if options[:include_dependencies] then 107: alert "`gem install -y` is now default and will be removed" 108: alert "use --ignore-dependencies to install only the gems you list" 109: end 110: 111: installed_gems = [] 112: 113: ENV.delete 'GEM_PATH' if options[:install_dir].nil? and RUBY_VERSION > '1.9' 114: 115: exit_code = 0 116: 117: get_all_gem_names.each do |gem_name| 118: begin 119: inst = Gem::DependencyInstaller.new options 120: inst.install gem_name, options[:version] 121: 122: inst.installed_gems.each do |spec| 123: say "Successfully installed #{spec.full_name}" 124: end 125: 126: installed_gems.push(*inst.installed_gems) 127: rescue Gem::InstallError => e 128: alert_error "Error installing #{gem_name}:\n\t#{e.message}" 129: exit_code |= 1 130: rescue Gem::GemNotFoundException => e 131: show_lookup_failure e.name, e.version, e.errors 132: 133: exit_code |= 2 134: end 135: end 136: 137: unless installed_gems.empty? then 138: gems = installed_gems.length == 1 ? 'gem' : 'gems' 139: say "#{installed_gems.length} #{gems} installed" 140: 141: # NOTE: *All* of the RI documents must be generated first. For some 142: # reason, RI docs cannot be generated after any RDoc documents are 143: # generated. 144: 145: if options[:generate_ri] then 146: installed_gems.each do |gem| 147: Gem::DocManager.new(gem, options[:rdoc_args]).generate_ri 148: end 149: 150: Gem::DocManager.update_ri_cache 151: end 152: 153: if options[:generate_rdoc] then 154: installed_gems.each do |gem| 155: Gem::DocManager.new(gem, options[:rdoc_args]).generate_rdoc 156: end 157: end 158: 159: if options[:test] then 160: installed_gems.each do |spec| 161: gem_spec = Gem::SourceIndex.from_installed_gems.find_name(spec.name, spec.version.version).first 162: result = Gem::Validator.new.unit_test(gem_spec) 163: if result and not result.passed? 164: unless ask_yes_no("...keep Gem?", true) 165: require 'rubygems/uninstaller' 166: Gem::Uninstaller.new(spec.name, :version => spec.version.version).uninstall 167: end 168: end 169: end 170: end 171: end 172: 173: raise Gem::SystemExitException, exit_code 174: end