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:       :version           => Gem::Requirement.default,
26:     })
27: 
28:     super 'install', 'Install a gem into the local repository', defaults
29: 
30:     add_install_update_options
31:     add_local_remote_options
32:     add_platform_option
33:     add_version_option
34:     add_prerelease_option "to be installed. (Only for listed gems)"
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:         next if options[:conservative] and
119:           not Gem::Dependency.new(gem_name, options[:version]).matching_specs.empty?
120: 
121:         inst = Gem::DependencyInstaller.new options
122:         inst.install gem_name, options[:version]
123: 
124:         inst.installed_gems.each do |spec|
125:           say "Successfully installed #{spec.full_name}"
126:         end
127: 
128:         installed_gems.push(*inst.installed_gems)
129:       rescue Gem::InstallError => e
130:         alert_error "Error installing #{gem_name}:\n\t#{e.message}"
131:         exit_code |= 1
132:       rescue Gem::GemNotFoundException => e
133:         show_lookup_failure e.name, e.version, e.errors, options[:domain]
134: 
135:         exit_code |= 2
136:       end
137:     end
138: 
139:     unless installed_gems.empty? then
140:       gems = installed_gems.length == 1 ? 'gem' : 'gems'
141:       say "#{installed_gems.length} #{gems} installed"
142: 
143:       # NOTE: *All* of the RI documents must be generated first.  For some
144:       # reason, RI docs cannot be generated after any RDoc documents are
145:       # generated.
146: 
147:       if options[:generate_ri] then
148:         installed_gems.each do |gem|
149:           Gem::DocManager.new(gem, options[:rdoc_args]).generate_ri
150:         end
151: 
152:         Gem::DocManager.update_ri_cache
153:       end
154: 
155:       if options[:generate_rdoc] then
156:         installed_gems.each do |gem|
157:           Gem::DocManager.new(gem, options[:rdoc_args]).generate_rdoc
158:         end
159:       end
160:     end
161: 
162:     raise Gem::SystemExitException, exit_code
163:   end

[Validate]