Class: Rubygems::Await::FullIndexAwaiter

Inherits:
Awaiter
  • Object
show all
Defined in:
lib/rubygems/await.rb

Instance Attribute Summary

Attributes inherited from Awaiter

#deadline, #gems, #name_indent, #source, #source_uri

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Awaiter

#call, call, #compact_index_client, #downloader, #expired?, #format_element, #gem_remote_fetcher, #index_fetcher, #inherited, #initialize, #log, #log_error, #log_found, #process_element, #safe_load_marshal, subclasses

Constructor Details

This class inherits a constructor from Rubygems::Await::Awaiter

Class Method Details

.awaiter_nameObject



352
353
354
# File 'lib/rubygems/await.rb', line 352

def self.awaiter_name
  "full index"
end

Instance Method Details

#collectionObject



337
338
339
# File 'lib/rubygems/await.rb', line 337

def collection
  super.delete_if { |t| /[a-z]/i.match?(t.version.to_s) }
end

#process_collection(missing) ⇒ Object



341
342
343
344
345
346
347
348
349
350
# File 'lib/rubygems/await.rb', line 341

def process_collection(missing)
  path = source_uri + "specs.#{Gem.marshal_version}.gz"
  contents = gem_remote_fetcher.fetch_path(path)
  idx = safe_load_marshal(contents)

  idx.each do |found|
    tuple = Gem::NameTuple.new(*found.map!(&:to_s))
    log_found(tuple) if missing.delete?(tuple)
  end
end