Class: Bundler::Resolver::Candidate
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
self,
Comparable
|
|
Inherits: | Object |
Defined in: | lib/bundler/resolver/candidate.rb |
Overview
This class is a ::Bundler::PubGrub
compatible “Version” class that takes ::Bundler
resolution complexities into account.
Each Candidate
has a underlying Gem::Version
plus a set of platforms. For example, 1.1.0-x86_64-linux is a different resolution candidate from 1.1.0 (generic). This is because different platform variants of the same gem version can bring different dependencies, so they need to be considered separately.
Some candidates may also keep some information explicitly about the package the refer to. These candidates are referred to as “canonical” and are used when materializing resolution results back into RubyGems specifications that can be installed, written to lock files, and so on.
Class Method Summary
- .new(version, specs: []) ⇒ Candidate constructor
Instance Attribute Summary
- #prerelease? ⇒ Boolean readonly
- #version readonly
Instance Method Summary
Constructor Details
.new(version, specs: []) ⇒ Candidate
Instance Attribute Details
#prerelease? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/bundler/resolver/candidate.rb', line 55
def prerelease? @version.prerelease? end
#version (readonly)
[ GitHub ]# File 'lib/bundler/resolver/candidate.rb', line 25
attr_reader :version
Instance Method Details
#<=>(other)
[ GitHub ]#==(other)
[ GitHub ]#dependencies
[ GitHub ]# File 'lib/bundler/resolver/candidate.rb', line 33
def dependencies @spec_group.dependencies end
#eql?(other) ⇒ Boolean
#generic!
[ GitHub ]# File 'lib/bundler/resolver/candidate.rb', line 43
def generic! @ruby_only = true self end
#hash
[ GitHub ]# File 'lib/bundler/resolver/candidate.rb', line 85
def hash sort_obj.hash end
#platform_specific!
[ GitHub ]# File 'lib/bundler/resolver/candidate.rb', line 49
def platform_specific! @ruby_only = false self end
#segments
[ GitHub ]# File 'lib/bundler/resolver/candidate.rb', line 59
def segments @version.segments end
#sort_obj
[ GitHub ]# File 'lib/bundler/resolver/candidate.rb', line 63
def sort_obj [@version, @ruby_only ? -1 : 1] end
#to_s
[ GitHub ]# File 'lib/bundler/resolver/candidate.rb', line 89
def to_s @version.to_s end
#to_specs(package)
[ GitHub ]# File 'lib/bundler/resolver/candidate.rb', line 37
def to_specs(package) return [] if package. @spec_group.to_specs(package.force_ruby_platform?) end