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 ()

Sets default instance variables for the specification.

# 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

Public Instance Methods

download (options)
# 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 ()

The name and version of the specification.

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

# File lib/rubygems/resolver/specification.rb, line 83
def full_name
  "#{@name}-#{@version}"
end
install (options = {}) { |installer| ... }

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.

# 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
installable_platform? ()

Returns true if this specification is installable on this platform.

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