class Gem::GemRunner
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.
Public Class Methods
new()
click to toggle source
# File rubygems/gem_runner.rb, line 23 def initialize @command_manager_class = Gem::CommandManager @config_file_class = Gem::ConfigFile end
Public Instance Methods
run(args)
click to toggle source
Run the gem command with the following arguments.
# File rubygems/gem_runner.rb, line 31 def run(args) validate_encoding args build_args = extract_build_args args do_configuration args begin Gem.load_env_plugins rescue StandardError nil end Gem.load_plugins 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, build_args end
Private Instance Methods
do_configuration(args)
click to toggle source
# File rubygems/gem_runner.rb, line 84 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] end
validate_encoding(args)
click to toggle source
# File rubygems/gem_runner.rb, line 76 def validate_encoding(args) invalid_arg = args.find {|arg| !arg.valid_encoding? } if invalid_arg raise Gem::OptionParser::InvalidArgument.new("'#{invalid_arg.scrub}' has invalid encoding") end end