In Files

  • rubygems/resolver/installer_set.rb

Class/Module Index [+]

Quicksearch

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.

 
               # File rubygems/resolver/installer_set.rb, line 26
def initialize domain
  @domain = domain

  @f = Gem::SpecFetcher.fetcher

  @all = Hash.new { |h,k| h[k] = [] }
  @always_install      = []
  @ignore_dependencies = false
  @ignore_installed    = false
  @loaded_remote_specs = []
  @specs               = {}
end
            

Public Instance Methods

find_all(req) click to toggle source

Returns an array of IndexSpecification objects matching DependencyRequest req.

 
               # File rubygems/resolver/installer_set.rb, line 57
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

  if consider_remote? then
    load_remote_specs dep

    @all[name].each do |remote_source, n|
      if dep.match? n then
        res << Gem::Resolver::IndexSpecification.new(
          self, n.name, n.version, remote_source, n.platform)
      end
    end
  end

  res
end