Spec-Zone.ru › Ruby 2.7

класс Bundler::RemoteSpecification

Родитель:
Объект
Включенные модули:
Bundler::MatchPlatform, Comparable

Представляет лениво загружаемое описание драгоценного камня, где полное описание находится на сервере источника в индексе «quick» rubygems. Объект-прокси должен быть заполнен тем, что мы получаем из сокращенного индекса источника — полное описание будет извлечено только при необходимости.

Атрибуты

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

Публичные методы класса

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

Публичные методы экземпляров

<=>(other) Показать исходный код
# File lib/bundler/remote_specification.rb, line 41
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 52
def __swap__(spec)
  SharedHelpers.ensure_same_dependencies(self, dependencies, spec.dependencies)
  @_remote_specification = spec
end

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

dependencies() Показать исходный код
# File lib/bundler/remote_specification.rb, line 74
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 26
def fetch_platform
  @platform = _remote_specification.platform
end

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

full_name() Показать исходный код
# File lib/bundler/remote_specification.rb, line 30
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 86
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 107
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 66
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 70
def to_s
  "#<#{self.class} name=#{name} version=#{version} platform=#{platform}>"
end

Приватные методы экземпляров

_remote_specification() Показать исходный код
# File lib/bundler/remote_specification.rb, line 97
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 103
def method_missing(method, *args, &blk)
  _remote_specification.send(method, *args, &blk)
end
to_ary() Показать исходный код
# File lib/bundler/remote_specification.rb, line 93
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