# class Gem::Resolver::Specification

A Resolver::Specification contains a subset of the information contained in a `Gem::Specification`. Only the information necessary for dependency resolution in the resolver is included.

### Attributes

dependencies [R]

The dependencies of the gem for this specification

name [R]

The name of the gem for this specification

platform [R]

The platform this gem works on.

required_ruby_version [R]

The `required_ruby_version` constraint for this specification.

required_rubygems_version [R]

The `required_ruby_version` constraint for this specification.

set [R]

The set this specification came from.

source [R]

The source for this specification

spec [R]

The `Gem::Specification` for this Resolver::Specification.

Implementers, note that `install` updates @spec, so be sure to cache the `Gem::Specification` in @spec when overriding.

version [R]

The version of the gem for this specification.

### Public Class Methods

new ()
Source

    # File lib/rubygems/resolver/specification.rb, line 60
    def initialize
      @dependencies = nil
      @name         = nil
      @platform     = nil
      @set          = nil
      @source       = nil
      @version      = nil
      @required_ruby_version = Gem::Requirement.default
      @required_rubygems_version = Gem::Requirement.default
    end

Sets default instance variables for the specification.

### Public Instance Methods

download (options)
Source

    # File lib/rubygems/resolver/specification.rb, line 108
    def download(options)
      dir = options[:install_dir] || Gem.dir

      Gem.ensure_gem_subdirectories dir

      source.download spec, dir
    end

full_name ()
Source

    # File lib/rubygems/resolver/specification.rb, line 83
    def full_name
      "#{@name}-#{@version}"
    end

The name and version of the specification.

Unlike `Gem::Specification#full_name`, the platform is not included.

install (options = {}) { |installer| ... }
Source

    # File lib/rubygems/resolver/specification.rb, line 96
    def install(options = {})
      require_relative "../installer"

      gem = download options

      installer = Gem::Installer.at gem, options

      yield installer if block_given?

      @spec = installer.install
    end

Installs this specification using the `Gem::Installer` `options`. The install method yields a `Gem::Installer` instance, which indicates the gem will be installed, or `nil`, which indicates the gem is already installed.

After installation `spec` is updated to point to the just-installed specification.

installable_platform? ()
Source

    # File lib/rubygems/resolver/specification.rb, line 119
    def installable_platform?
      Gem::Platform.match_spec? spec
    end

Returns true if this specification is installable on this platform.