class Gem::RequestSet

def install options, &block # :yields: request, installer

:yields: request, installer
def install options, &block # :yields: request, installer
  if dir = options[:install_dir]
    requests = install_into dir, false, options, &block
    return requests
  end
  @prerelease = options[:prerelease]
  requests = []
  sorted_requests.each do |req|
    if req.installed? then
      req.spec.spec.build_extensions
      if @always_install.none? { |spec| spec == req.spec.spec } then
        yield req, nil if block_given?
        next
      end
    end
    spec = req.spec.install options do |installer|
      yield req, installer if block_given?
    end
    requests << spec
  end
  return requests if options[:gemdeps]
  specs = requests.map do |request|
    case request
    when Gem::Resolver::ActivationRequest then
      request.spec.spec
    else
      request
    end
  end
  require 'rubygems/dependency_installer'
  inst = Gem::DependencyInstaller.new options
  inst.installed_gems.replace specs
  Gem.done_installing_hooks.each do |hook|
    hook.call inst, specs
  end unless Gem.done_installing_hooks.empty?
  requests
end