class Gem::Commands::ExecCommand

def handle_options(args)

def handle_options(args)
  args = add_extra_args(args)
  check_deprecated_options(args)
  @options = Marshal.load Marshal.dump @defaults # deep copy
  parser.order!(args) do |v|
    # put the non-option back at the front of the list of arguments
    args.unshift(v)
    # stop parsing once we hit the first non-option,
    # so you can call `gem exec rails --version` and it prints the rails
    # version rather than rubygem's
    break
  end
  @options[:args] = args
  options[:executable], gem_version = extract_gem_name_and_version(options[:args].shift)
  options[:gem_name] ||= options[:executable]
  if gem_version
    if options[:version].none?
      options[:version] = Gem::Requirement.new(gem_version)
    else
      options[:version].concat [gem_version]
    end
  end
  if options[:prerelease] && !options[:version].prerelease?
    if options[:version].none?
      options[:version] = Gem::Requirement.default_prerelease
    else
      options[:version].concat [Gem::Requirement.default_prerelease]
    end
  end
end