Class: Gem::GemRunner
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/rubygems/gem_runner.rb |
Overview
Run an instance of the gem program.
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.
Class Method Summary
- .new ⇒ GemRunner constructor
Instance Method Summary
-
#run(args)
Run the gem command with the following arguments.
- #do_configuration(args) private
- #validate_encoding(args) private
-
#extract_build_args(args)
Internal use only
Separates the build arguments (those following
--
) from the other arguments in the list.
Constructor Details
.new ⇒ GemRunner
# File 'lib/rubygems/gem_runner.rb', line 23
def initialize @command_manager_class = Gem::CommandManager @config_file_class = Gem::ConfigFile end
Instance Method Details
#do_configuration(args) (private)
[ GitHub ]# File 'lib/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
#extract_build_args(args)
This method is for internal use only.
Separates the build arguments (those following --
) from the other arguments in the list.
# File 'lib/rubygems/gem_runner.rb', line 64
def extract_build_args(args) # :nodoc: return [] unless offset = args.index("--") build_args = args.slice!(offset...args.length) build_args.shift build_args end
#run(args)
Run the gem command with the following arguments.
# File 'lib/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
#validate_encoding(args) (private)
[ GitHub ]# File 'lib/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