Run an instance of the gem program.

Gem::GemRunner is only intended for internal use by RubyGems itself. It does not form any public API and may change at any time for any reason.

If you would like to duplicate functionality of `gem` commands, use the classes they call directly.

Methods
D
N
R
Class Public methods
new(options={})
# File ../ruby/lib/rubygems/gem_runner.rb, line 28
def initialize(options={})
  # TODO: nuke these options
  @command_manager_class = options[:command_manager] || Gem::CommandManager
  @config_file_class = options[:config_file] || Gem::ConfigFile
  @doc_manager_class = options[:doc_manager] || Gem::DocManager
end
Instance Public methods
run(args)

Run the gem command with the following arguments.

# File ../ruby/lib/rubygems/gem_runner.rb, line 38
def run(args)
  start_time = Time.now

  if args.include?('--')
    # We need to preserve the original ARGV to use for passing gem options
    # to source gems.  If there is a -- in the line, strip all options after
    # it...its for the source building process.
    build_args = args[args.index("--") + 1...args.length]
    args = args[0...args.index("--")]
  end

  Gem::Command.build_args = build_args if build_args

  do_configuration args
  cmd = @command_manager_class.instance

  cmd.command_names.each do |command_name|
    config_args = Gem.configuration[command_name]
    config_args = case config_args
                  when String
                    config_args.split ' '
                  else
                    Array(config_args)
                  end
    Gem::Command.add_specific_extra_args command_name, config_args
  end

  cmd.run Gem.configuration.args
  end_time = Time.now

  if Gem.configuration.benchmark then
    printf "\nExecution time: %0.2f seconds.\n", end_time - start_time
    puts "Press Enter to finish"
    STDIN.gets
  end
end
Instance Private methods
do_configuration(args)
# File ../ruby/lib/rubygems/gem_runner.rb, line 77
def do_configuration(args)
  Gem.configuration = @config_file_class.new(args)
  Gem.use_paths Gem.configuration[:gemhome], Gem.configuration[:gempath]
  Gem::Command.extra_args = Gem.configuration[:gem]
  @doc_manager_class.configured_args = Gem.configuration[:rdoc]
end