class Gem::Resolver::Specification
Resolver::Specification 包含 Gem::Specification 中一部分信息。只包含解析器中依赖解析所需的信息。
属性
此规范 gem 的依赖项
此规范的 gem 名称
此 gem 运行的平台。
此规范所属的集合。
此规范的来源
此 Resolver::Specification 的 Gem::Specification。
实现者请注意,install 会更新 @spec,因此在重写时请务必将 Gem::Specification 缓存到 @spec 中。
此规范的 gem 版本。
Public Class Methods
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
为规范设置默认实例变量。
Public Instance Methods
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
Source
# File lib/rubygems/resolver/specification.rb, line 83 def full_name "#{@name}-#{@version}" end
规范的名称和版本。
与 Gem::Specification#full_name 不同,不包含平台。
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
使用 Gem::Installer options 安装此规范。install 方法会 yield 一个 Gem::Installer 实例,表示 gem 将被安装,或者 nil,表示 gem 已被安装。
安装后,spec 会更新为指向刚安装的规范。
Source
# File lib/rubygems/resolver/specification.rb, line 119 def installable_platform? Gem::Platform.match_spec? spec end
如果此规范在此平台上可安装,则返回 true。