123456789_123456789_123456789_123456789_123456789_

Class: Gem::Resolver::LockSet

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Set
Instance Chain:
self, Set
Inherits: Gem::Resolver::Set
Defined in: lib/rubygems/resolver/lock_set.rb

Overview

A set of gems from a gem dependencies lockfile.

Class Method Summary

Set - Inherited

Instance Attribute Summary

  • #specs readonly Internal use only

Set - Inherited

#errors

Errors encountered when resolving gems.

#prerelease

When true, allows matching of requests to prerelease gems.

#remote

Set to true to disable network access for this set.

#remote?

When true, this set is allowed to access the network when looking up specifications or dependencies.

Instance Method Summary

Set - Inherited

#find_all

The find_all method must be implemented.

#prefetch

The #prefetch method may be overridden, but this is not necessary.

Constructor Details

.new(sources) ⇒ LockSet

Creates a new LockSet from the given Gem.sources

[ GitHub ]

  
# File 'lib/rubygems/resolver/lock_set.rb', line 12

def initialize(sources)
  super()

  @sources = sources.map do |source|
    Gem::Source::Lock.new source
  end

  @specs = []
end

Instance Attribute Details

#specs (readonly)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rubygems/resolver/lock_set.rb', line 7

attr_reader :specs # :nodoc:

Instance Method Details

#add(name, version, platform)

This method is for internal use only.

Creates a new IndexSpecification in this set using the given name, version and platform.

The specification’s set will be the current set, and the source will be the current set’s source.

[ GitHub ]

  
# File 'lib/rubygems/resolver/lock_set.rb', line 29

def add(name, version, platform) # :nodoc:
  version = Gem::Version.new version
  specs = [
    Gem::Resolver::LockSpecification.new(self, name, version, @sources, platform),
  ]

  @specs.concat specs

  specs
end

#find_all(req)

Returns an Array of IndexSpecification objects matching the DependencyRequest req.

[ GitHub ]

  
# File 'lib/rubygems/resolver/lock_set.rb', line 44

def find_all(req)
  @specs.select do |spec|
    req.match? spec
  end
end

#load_spec(name, version, platform, source)

This method is for internal use only.

Loads a ::Gem::Specification with the given name, version and platform. source is ignored.

[ GitHub ]

  
# File 'lib/rubygems/resolver/lock_set.rb', line 54

def load_spec(name, version, platform, source) # :nodoc:
  dep = Gem::Dependency.new name, version

  found = @specs.find do |spec|
    dep.matches_spec?(spec) && spec.platform == platform
  end

  tuple = Gem::NameTuple.new found.name, found.version, found.platform

  found.source.fetch_spec tuple
end

#pretty_print(q)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rubygems/resolver/lock_set.rb', line 66

def pretty_print(q) # :nodoc:
  q.group 2, "[LockSet", "]" do
    q.breakable
    q.text "source:"

    q.breakable
    q.pp @source

    q.breakable
    q.text "specs:"

    q.breakable
    q.pp @specs.map(&:full_name)
  end
end