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] && Gem.available?(gem_name, options[:version])
119: 
120:         inst = Gem::DependencyInstaller.new options
121:         inst.install gem_name, options[:version]
122: 
123:         inst.installed_gems.each do |spec|
124:           say "Successfully installed #{spec.full_name}"
125:         end
126: 
127:         installed_gems.push(*inst.installed_gems)
128:       rescue Gem::InstallError => e
129:         alert_error "Error installing #{gem_name}:\n\t#{e.message}"
130:         exit_code |= 1
131:       rescue Gem::GemNotFoundException => e
132:         show_lookup_failure e.name, e.version, e.errors, options[:domain]
133: 
134:         exit_code |= 2
135:       end
136:     end
137: 
138:     unless installed_gems.empty? then
139:       gems = installed_gems.length == 1 ? 'gem' : 'gems'
140:       say "#{installed_gems.length} #{gems} installed"
141: 
142:       # NOTE: *All* of the RI documents must be generated first.  For some
143:       # reason, RI docs cannot be generated after any RDoc documents are
144:       # generated.
145: 
146:       if options[:generate_ri] then
147:         installed_gems.each do |gem|
148:           Gem::DocManager.new(gem, options[:rdoc_args]).generate_ri
149:         end
150: 
151:         Gem::DocManager.update_ri_cache
152:       end
153: 
154:       if options[:generate_rdoc] then
155:         installed_gems.each do |gem|
156:           Gem::DocManager.new(gem, options[:rdoc_args]).generate_rdoc
157:         end
158:       end
159:     end
160: 
161:     raise Gem::SystemExitException, exit_code
162:   end

[Validate]