class Gem::Resolver::Specification

Resolver::Specification 包含 Gem::Specification 中信息的子集。仅包含解析器中依赖项解析所需的信息。

属性

dependencies[R]

此规范的 gem 的依赖项

name[R]

此规范的 gem 的名称

platform[R]

此 gem 运行的平台。

required_ruby_version[R]

此规范的 required_ruby_version 约束。

required_rubygems_version[R]

此规范的 required_ruby_version 约束。

set[R]

此规范来自的集合。

source[R]

此规范的来源

spec[R]

此 Resolver::Specification 的 Gem::Specification

实现者请注意,install 会更新 @spec,因此请在覆盖时确保在 @spec 中缓存 Gem::Specification

version[R]

此规范的 gem 的版本。

公共类方法

new() 点击以切换源代码

设置规范的默认实例变量。

# File 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

公共实例方法

download(options) 点击以切换源代码
# File 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() 点击以切换源代码

规范的名称和版本。

Gem::Specification#full_name 不同,不包含平台。

# File rubygems/resolver/specification.rb, line 83
def full_name
  "#{@name}-#{@version}"
end
install(options = {}) { |installer| ... } 点击以切换源代码

使用 Gem::Installer options 安装此规范。 install 方法会生成一个 Gem::Installer 实例,表示 gem 将被安装,或者 nil,表示 gem 已安装。

安装后,spec 将更新为指向刚刚安装的规范。

# File 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?() 点击以切换源代码

如果此规范可在此平台上安装,则返回 true。

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