Class: Gem::GemRunner
Overview
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.
Instance Method Summary collapse
-
#extract_build_args(args) ⇒ Object
Separates the build arguments (those following
--
) from the other arguments in the list. -
#initialize ⇒ GemRunner
constructor
A new instance of GemRunner.
-
#run(args) ⇒ Object
Run the gem command with the following arguments.
Constructor Details
#initialize ⇒ GemRunner
Returns a new instance of GemRunner.
27 28 29 30 |
# File 'lib/rubygems/gem_runner.rb', line 27 def initialize @command_manager_class = Gem::CommandManager @config_file_class = Gem::ConfigFile end |
Instance Method Details
#extract_build_args(args) ⇒ Object
Separates the build arguments (those following --
) from the other arguments in the list.
60 61 62 63 64 65 66 67 68 |
# File 'lib/rubygems/gem_runner.rb', line 60 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) ⇒ Object
Run the gem command with the following arguments.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/rubygems/gem_runner.rb', line 35 def run(args) build_args = extract_build_args 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, build_args end |