Class: Bundler::Fetcher::CompactIndex
- Defined in:
- lib/bundler/fetcher/compact_index.rb
Defined Under Namespace
Classes: ClientFetcher
Instance Attribute Summary
Attributes inherited from Base
#display_uri, #downloader, #gem_remote_fetcher, #remote
Class Method Summary collapse
Instance Method Summary collapse
- #api_fetcher? ⇒ Boolean
- #available? ⇒ Boolean
-
#release_resolution_memory! ⇒ Object
The client holds the parsed checksums of all info files in the index.
- #specs(gem_names) ⇒ Object
- #specs_for_names(gem_names) ⇒ Object
Methods inherited from Base
#fetch_uri, #initialize, #remote_uri
Constructor Details
This class inherits a constructor from Bundler::Fetcher::Base
Class Method Details
.compact_index_request(method_name) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/bundler/fetcher/compact_index.rb', line 9 def self.compact_index_request(method_name) method = instance_method(method_name) undef_method(method_name) define_method(method_name) do |*args, &blk| method.bind_call(self, *args, &blk) rescue NetworkDownError, CompactIndexClient::Updater::MismatchedChecksumError => e raise HTTPError, e. rescue AuthenticationRequiredError, BadAuthenticationError # Fail since we got a 401 from the server. raise rescue HTTPError => e Bundler.ui.trace(e) nil end end |
Instance Method Details
#api_fetcher? ⇒ Boolean
62 63 64 |
# File 'lib/bundler/fetcher/compact_index.rb', line 62 def api_fetcher? true end |
#available? ⇒ Boolean
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/bundler/fetcher/compact_index.rb', line 49 def available? unless SharedHelpers.md5_available? Bundler.ui.debug("FIPS mode is enabled, bundler can't use the CompactIndex API") return nil end # Read info file checksums out of /versions, so we can know if gems are up to date compact_index_client.available? rescue CompactIndexClient::Updater::MismatchedChecksumError => e Bundler.ui.debug(e.) nil end |
#release_resolution_memory! ⇒ Object
The client holds the parsed checksums of all info files in the index. Dropping it is always safe because it is rebuilt from the local cache on demand.
69 70 71 |
# File 'lib/bundler/fetcher/compact_index.rb', line 69 def release_resolution_memory! @compact_index_client = nil end |
#specs(gem_names) ⇒ Object
25 26 27 |
# File 'lib/bundler/fetcher/compact_index.rb', line 25 def specs(gem_names) specs_for_names(gem_names) end |
#specs_for_names(gem_names) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/bundler/fetcher/compact_index.rb', line 30 def specs_for_names(gem_names) gem_info = [] complete_gems = [] remaining_gems = gem_names.dup until remaining_gems.empty? log_specs { "Looking up gems #{remaining_gems.inspect}" } deps = fetch_gem_infos(remaining_gems).flatten(1) next_gems = deps.flat_map {|d| d[CompactIndexClient::INFO_DEPS].flat_map(&:first) }.uniq deps.each {|dep| gem_info << dep } complete_gems.concat(deps.map(&:first)).uniq! remaining_gems = next_gems - complete_gems end @bundle_worker&.stop @bundle_worker = nil # reset it. Not sure if necessary gem_info end |