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:     add_prerelease_option "to be installed. (Only for listed gems)"
36:   end

Public Instance methods

[Source]

     # 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

[Validate]