Spec-Zone.ru › Ruby 2.6

class Bundler::RemoteSpecification

Parent:
Объект
Included modules:
Bundler::MatchPlatform, Comparable

Represents a lazily loaded gem specification, where the full specification is on the source server in rubygems' “quick” index. The proxy object is to be seeded with what we're given from the source's abbreviated index - the full specification will only be fetched when necessary.

Атрибуты

dependencies[W]
name[R]
platform[R]
remote[RW]
source[RW]
version[R]

Public Class Methods

new(name, version, platform, spec_fetcher) Показать исходный код
# File lib/bundler/remote_specification.rb, line 18
def initialize(name, version, platform, spec_fetcher)
  @name         = name
  @version      = Gem::Version.create version
  @platform     = platform
  @spec_fetcher = spec_fetcher
  @dependencies = nil
end

Public Instance Methods

<=>(other) Показать исходный код
# File lib/bundler/remote_specification.rb, line 43
def <=>(other)
  if other.respond_to?(:sort_obj)
    sort_obj <=> other.sort_obj
  else
    super
  end
end

Сравните эту спецификацию с другим объектом. Использование sort_obj совместимо с Gem::Specification и другими объектами Bundler или RubyGems. В противном случае используйте стандартное сравнение Object.

Вызов метода суперкласса Object#<=>
__swap__(spec) Показать исходный код
# File lib/bundler/remote_specification.rb, line 54
def __swap__(spec)
  SharedHelpers.ensure_same_dependencies(self, dependencies, spec.dependencies)
  @_remote_specification = spec
end

Поскольку на Rubyforge нельзя полагаться, что он предоставит допустимые спецификации после загрузки удаленного драгоценного камня, спецификация бэкенда будет заменена.

dependencies() Показать исходный код
# File lib/bundler/remote_specification.rb, line 76
def dependencies
  @dependencies ||= begin
    deps = method_missing(:dependencies)

    # allow us to handle when the specs dependencies are an array of array of string
    # see https://github.com/bundler/bundler/issues/5797
    deps = deps.map {|d| d.is_a?(Gem::Dependency) ? d : Gem::Dependency.new(*d) }

    deps
  end
end
fetch_platform() Показать исходный код
# File lib/bundler/remote_specification.rb, line 28
def fetch_platform
  @platform = _remote_specification.platform
end

Необходимо перед установкой, так как архитектура имеет значение, а быстрые спецификации не утруждают себя включением архитектуры в строку платформы

full_name() Показать исходный код
# File lib/bundler/remote_specification.rb, line 32
def full_name
  if platform == Gem::Platform::RUBY || platform.nil?
    "#{@name}-#{@version}"
  else
    "#{@name}-#{@version}-#{platform}"
  end
end
git_version() Показать исходный код
# File lib/bundler/remote_specification.rb, line 88
def git_version
  return unless loaded_from && source.is_a?(Bundler::Source::Git)
  " #{source.revision[0..6]}"
end
respond_to?(method, include_all = false) Показать исходный код
# File lib/bundler/remote_specification.rb, line 109
def respond_to?(method, include_all = false)
  super || _remote_specification.respond_to?(method, include_all)
end
Вызов метода суперкласса Object#respond_to?
sort_obj() Показать исходный код
# File lib/bundler/remote_specification.rb, line 68
def sort_obj
  [@name, @version, @platform == Gem::Platform::RUBY ? -1 : 1]
end

Создайте делегат, используемый для сортировки. Эта стратегия скопирована с RubyGems 2.23 и гарантирует, что спецификации Bundler можно сравнивать и сортировать со своими собственными спецификациями RubyGems.

@see #<=> @see Gem::Specification#sort_obj

@return [Массив] объект, который вы можете использовать для сравнения и сортировки этого

specification against other specifications
to_s() Показать исходный код
# File lib/bundler/remote_specification.rb, line 72
def to_s
  "#<#{self.class} name=#{name} version=#{version} platform=#{platform}>"
end

Private Instance Methods

_remote_specification() Показать исходный код
# File lib/bundler/remote_specification.rb, line 99
def _remote_specification
  @_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @platform])
  @_remote_specification || raise(GemspecError, "Gemspec data for #{full_name} was" \
    " missing from the server! Try installing with `--full-index` as a workaround.")
end
method_missing(method, *args, &blk) Показать исходный код
# File lib/bundler/remote_specification.rb, line 105
def method_missing(method, *args, &blk)
  _remote_specification.send(method, *args, &blk)
end
to_ary() Показать исходный код
# File lib/bundler/remote_specification.rb, line 95
def to_ary
  nil
end

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API