class Gem::Resolver::InstallerSet

A set of gems for installation sourced from remote sources and local .gem files

Public Class Methods

new(domain) click to toggle source

Creates a new InstallerSet that will look for gems in domain.

Calls superclass method BasicObject.new
# File lib/rubygems/resolver/installer_set.rb, line 26
def initialize domain
  super()

  @domain = domain
  @remote = consider_remote?

  @f = Gem::SpecFetcher.fetcher

  @always_install      = []
  @ignore_dependencies = false
  @ignore_installed    = false
  @remote_set          = Gem::Resolver::BestSet.new
  @specs               = {}
end

Public Instance Methods

find_all(req) click to toggle source

Returns an array of IndexSpecification objects matching DependencyRequest req.

# File lib/rubygems/resolver/installer_set.rb, line 59
def find_all req
  res = []

  dep  = req.dependency

  return res if @ignore_dependencies and
            @always_install.none? { |spec| dep.matches_spec? spec }

  name = dep.name

  dep.matching_specs.each do |gemspec|
    next if @always_install.include? gemspec

    res << Gem::Resolver::InstalledSpecification.new(self, gemspec)
  end unless @ignore_installed

  if consider_local? then
    local_source = Gem::Source::Local.new

    if spec = local_source.find_gem(name, dep.requirement) then
      res << Gem::Resolver::IndexSpecification.new(
        self, spec.name, spec.version, local_source, spec.platform)
    end
  end

  res.concat @remote_set.find_all req if consider_remote?

  res
end