In Files

  • rubygems/resolver/specification.rb

Class/Module Index [+]

Quicksearch

Gem::Resolver::Specification

frozen_string_literal: true

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.

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() click to toggle source

Sets default instance variables for the specification.

 
               # File rubygems/resolver/specification.rb, line 50
def initialize
  @dependencies = nil
  @name         = nil
  @platform     = nil
  @set          = nil
  @source       = nil
  @version      = nil
end
            

Public Instance Methods

download(options) click to toggle source
 
               # File rubygems/resolver/specification.rb, line 96
def download(options)
  dir = options[:install_dir] || Gem.dir

  Gem.ensure_gem_subdirectories dir

  source.download spec, dir
end
            
full_name() click to toggle source

The name and version of the specification.

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

 
               # File rubygems/resolver/specification.rb, line 71
def full_name
  "#{@name}-#{@version}"
end
            
install(options = {}) click to toggle source

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 rubygems/resolver/specification.rb, line 84
def install(options = {})
  require 'rubygems/installer'

  gem = download options

  installer = Gem::Installer.at gem, options

  yield installer if block_given?

  @spec = installer.install
end
            
installable_platform?() click to toggle source

Returns true if this specification is installable on this platform.

 
               # File rubygems/resolver/specification.rb, line 107
def installable_platform?
  Gem::Platform.match spec.platform
end