Class Gem::Commands::InstallCommand
In: lib/rubygems/commands/install_command.rb
Parent: Gem::Command

Gem installer command line tool

See `gem help install`

Methods

execute   new  

Included Modules

Gem::VersionOption Gem::LocalRemoteOptions Gem::InstallUpdateOptions

Public Class methods

[Source]

    # 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:   end

Public Instance methods

[Source]

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

[Validate]