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

# class Bundler::Resolver::Package

Represents a gem being resolved, in a format `PubGrub` likes.

The class holds the following information:

- Platforms this gem will be resolved on.

- The locked version of this gem resolution should favor (if any).

- Whether the gem should be unlocked to its latest version.

- The dependency explicit set in the Gemfile for this gem (if any).

### Attributes

dependency[R]
locked_version[R]
name[R]
platforms[R]

### Public Class Methods

new(name, platforms, locked_specs:, unlock:, prerelease: false, prefer_local: false, dependency: nil) click to toggle source

    # File bundler/resolver/package.rb, line 18
    def initialize(name, platforms, locked_specs:, unlock:, prerelease: false, prefer_local: false, dependency: nil)
      @name = name
      @platforms = platforms
      @locked_version = locked_specs[name].first&.version
      @unlock = unlock
      @dependency = dependency || Dependency.new(name, @locked_version)
      @top_level = !dependency.nil?
      @prerelease = @dependency.prerelease? || @locked_version&.prerelease? || prerelease ? :consider_first : :ignore
      @prefer_local = prefer_local
    end

### Public Instance Methods

==(other) click to toggle source

    # File bundler/resolver/package.rb, line 49
    def ==(other)
      self.class == other.class && @name == other.name
    end

consider_prereleases!() click to toggle source

    # File bundler/resolver/package.rb, line 69
    def consider_prereleases!
      @prerelease = :consider_last
    end

consider_remote_versions!() click to toggle source

    # File bundler/resolver/package.rb, line 77
    def consider_remote_versions!
      @prefer_local = false
    end

current_platform?() click to toggle source

    # File bundler/resolver/package.rb, line 85
    def current_platform?
      @dependency.current_platform?
    end

force_ruby_platform?() click to toggle source

    # File bundler/resolver/package.rb, line 81
    def force_ruby_platform?
      @dependency.force_ruby_platform
    end

hash() click to toggle source

    # File bundler/resolver/package.rb, line 53
    def hash
      @name.hash
    end

ignores_prereleases?() click to toggle source

    # File bundler/resolver/package.rb, line 61
    def ignores_prereleases?
      @prerelease == :ignore
    end

meta?() click to toggle source

    # File bundler/resolver/package.rb, line 45
    def meta?
      @name.end_with?("\0")
    end

platform_specs(specs) click to toggle source

    # File bundler/resolver/package.rb, line 29
    def platform_specs(specs)
      platforms.map {|platform| GemHelpers.select_best_platform_match(specs, platform, prefer_locked: !unlock?) }
    end

prefer_local?() click to toggle source

    # File bundler/resolver/package.rb, line 73
    def prefer_local?
      @prefer_local
    end

prerelease_specified?() click to toggle source

    # File bundler/resolver/package.rb, line 65
    def prerelease_specified?
      @prerelease == :consider_first
    end

root?() click to toggle source

    # File bundler/resolver/package.rb, line 37
    def root?
      false
    end

to_s() click to toggle source

    # File bundler/resolver/package.rb, line 33
    def to_s
      @name.delete("\0")
    end

top_level?() click to toggle source

    # File bundler/resolver/package.rb, line 41
    def top_level?
      @top_level
    end

unlock?() click to toggle source

    # File bundler/resolver/package.rb, line 57
    def unlock?
      @unlock.empty? || @unlock.include?(name)
    end