class Bundler::Resolver::Candidate - bundler: Ruby Standard Library Documentation

# class Bundler::Resolver::Candidate

This class is a `PubGrub` compatible “Version” class that takes `Bundler` resolution complexities into account.

Each `Resolver::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 they 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.

### Attributes

version[R]

### Public Class Methods

new(version, group: nil, priority: -1) click to toggle source

    # File bundler/resolver/candidate.rb, line 27
    def initialize(version, group: nil, priority: -1)
      @spec_group = group || SpecGroup.new([])
      @version = Gem::Version.new(version)
      @priority = priority
    end

### Public Instance Methods

<=>(other) click to toggle source

    # File bundler/resolver/candidate.rb, line 55
    def <=>(other)
      return unless other.is_a?(self.class)

      sort_obj <=> other.sort_obj
    end

==(other) click to toggle source

    # File bundler/resolver/candidate.rb, line 61
    def ==(other)
      return unless other.is_a?(self.class)

      sort_obj == other.sort_obj
    end

dependencies() click to toggle source

    # File bundler/resolver/candidate.rb, line 33
    def dependencies
      @spec_group.dependencies
    end

eql?(other) click to toggle source

    # File bundler/resolver/candidate.rb, line 67
    def eql?(other)
      return unless other.is_a?(self.class)

      sort_obj.eql?(other.sort_obj)
    end

hash() click to toggle source

    # File bundler/resolver/candidate.rb, line 73
    def hash
      sort_obj.hash
    end

prerelease?() click to toggle source

    # File bundler/resolver/candidate.rb, line 43
    def prerelease?
      @version.prerelease?
    end

segments() click to toggle source

    # File bundler/resolver/candidate.rb, line 47
    def segments
      @version.segments
    end

sort_obj() click to toggle source

    # File bundler/resolver/candidate.rb, line 51
    def sort_obj
      [@version, @priority]
    end

to_s() click to toggle source

    # File bundler/resolver/candidate.rb, line 77
    def to_s
      @version.to_s
    end

to_specs(package, most_specific_locked_platform) click to toggle source

    # File bundler/resolver/candidate.rb, line 37
    def to_specs(package, most_specific_locked_platform)
      return [] if package.meta?

      @spec_group.to_specs(package.force_ruby_platform?, most_specific_locked_platform)
    end