class Gem::Commands::InstallCommand

Gem installer command line tool

See `gem help install`

Public Class Methods

new() click to toggle source
Calls superclass method Gem::Command.new
# File lib/rubygems/commands/install_command.rb, line 22
def initialize
  defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge({
    :format_executable => false,
    :lock              => true,
    :suggest_alternate => true,
    :version           => Gem::Requirement.default,
    :without_groups    => [],
  })

  super 'install', 'Install a gem into the local repository', defaults

  add_install_update_options
  add_local_remote_options
  add_platform_option
  add_version_option
  add_prerelease_option "to be installed. (Only for listed gems)"

  add_option(:"Install/Update", '-g', '--file [FILE]',
             'Read from a gem dependencies API file and',
             'install the listed gems') do |v,o|
    v = Gem::GEM_DEP_FILES.find do |file|
      File.exist? file
    end unless v

    unless v then
      message = v ? v : "(tried #{Gem::GEM_DEP_FILES.join ', '})"

      raise OptionParser::InvalidArgument,
              "cannot find gem dependencies file #{message}"
    end

    o[:gemdeps] = v
  end

  add_option(:"Install/Update", '--without GROUPS', Array,
             'Omit the named groups (comma separated)',
             'when installing from a gem dependencies',
             'file') do |v,o|
    o[:without_groups].concat v.map { |without| without.intern }
  end

  add_option(:"Install/Update", '--default',
             'Add the gem\'s full specification to',
             'specifications/default and extract only its bin') do |v,o|
    o[:install_as_default] = v
  end

  add_option(:"Install/Update", '--explain',
             'Rather than install the gems, indicate which would',
             'be installed') do |v,o|
    o[:explain] = v
  end

  add_option(:"Install/Update", '--[no-]lock',
             'Create a lock file (when used with -g/--file)') do |v,o|
    o[:lock] = v
  end

  add_option(:"Install/Update", '--[no-]suggestions',
             'Suggest alternates when gems are not found') do |v,o|
    o[:suggest_alternate] = v
  end

  @installed_specs = []
end

Public Instance Methods

execute() click to toggle source
# File lib/rubygems/commands/install_command.rb, line 188
def execute
  if options.include? :gemdeps then
    install_from_gemdeps
    return # not reached
  end

  @installed_specs = []

  ENV.delete 'GEM_PATH' if options[:install_dir].nil? and RUBY_VERSION > '1.9'

  check_install_dir
  check_version

  load_hooks

  exit_code = install_gems

  show_installed

  terminate_interaction exit_code
end