Class: Gem::Resolver::ComposedSet

Inherits:
Set
  • Object
show all
Defined in:
lib/rubygems/resolver/composed_set.rb

Overview

A ComposedSet allows multiple sets to be queried like a single set.

To create a composed set with any number of sets use:

Gem::Resolver.compose_sets set1, set2

This method will eliminate nesting of composed sets.

Direct Known Subclasses

BestSet

Instance Attribute Summary collapse

Attributes inherited from Set

#prerelease, #remote

Instance Method Summary collapse

Methods inherited from Set

#remote?

Constructor Details

#initialize(*sets) ⇒ ComposedSet

Creates a new ComposedSet containing sets. Use Gem::Resolver::compose_sets instead.



19
20
21
22
23
# File 'lib/rubygems/resolver/composed_set.rb', line 19

def initialize(*sets)
  super()

  @sets = sets
end

Instance Attribute Details

#setsObject (readonly)

:nodoc:



13
14
15
# File 'lib/rubygems/resolver/composed_set.rb', line 13

def sets
  @sets
end

Instance Method Details

#errorsObject



46
47
48
# File 'lib/rubygems/resolver/composed_set.rb', line 46

def errors
  @errors + @sets.map { |set| set.errors }.flatten
end

#find_all(req) ⇒ Object

Finds all specs matching req in all sets.



53
54
55
56
57
# File 'lib/rubygems/resolver/composed_set.rb', line 53

def find_all(req)
  @sets.map do |s|
    s.find_all req
  end.flatten
end

#prefetch(reqs) ⇒ Object

Prefetches reqs in all sets.



62
63
64
# File 'lib/rubygems/resolver/composed_set.rb', line 62

def prefetch(reqs)
  @sets.each { |s| s.prefetch(reqs) }
end

#prerelease=(allow_prerelease) ⇒ Object

When allow_prerelease is set to true prereleases gems are allowed to match dependencies.



29
30
31
32
33
34
35
# File 'lib/rubygems/resolver/composed_set.rb', line 29

def prerelease=(allow_prerelease)
  super

  sets.each do |set|
    set.prerelease = allow_prerelease
  end
end

#remote=(remote) ⇒ Object

Sets the remote network access for all composed sets.



40
41
42
43
44
# File 'lib/rubygems/resolver/composed_set.rb', line 40

def remote=(remote)
  super

  @sets.each { |set| set.remote = remote }
end