From da2adf34ecff1a7198413e2df6b0bc0841ab3553 Mon Sep 17 00:00:00 2001 From: "Samuel E. Giddins" Date: Sun, 12 Apr 2015 00:15:03 -0700 Subject: [Fetcher] Fix availability logic to avoid multiple calls --- lib/bundler/fetcher/base.rb | 4 ++-- lib/bundler/fetcher/compact_index.rb | 14 +++++++++++--- lib/bundler/fetcher/dependency.rb | 4 ++-- 3 files changed, 15 insertions(+), 7 deletions(-) (limited to 'lib/bundler/fetcher') diff --git a/lib/bundler/fetcher/base.rb b/lib/bundler/fetcher/base.rb index 5cc405cc8a..1d1adc73db 100644 --- a/lib/bundler/fetcher/base.rb +++ b/lib/bundler/fetcher/base.rb @@ -28,8 +28,8 @@ module Bundler end end - def api_available? - api_fetcher? + def available? + true end def api_fetcher? diff --git a/lib/bundler/fetcher/compact_index.rb b/lib/bundler/fetcher/compact_index.rb index 028ad10a5a..6f3e8323ab 100644 --- a/lib/bundler/fetcher/compact_index.rb +++ b/lib/bundler/fetcher/compact_index.rb @@ -5,12 +5,16 @@ module Bundler class Fetcher class CompactIndex < Base def specs(_gem_names) - compact_gem_list.versions.values.flatten(1).map! do |args| + @specs ||= compact_gem_list.versions.values.flatten(1).map! do |args| args = args.fill(nil, args.size..2) RemoteSpecification.new(*args, self) end - rescue HTTPError => e - raise unless e.message =~ /^Net::HTTPNotFound/ + rescue NetworkDownError => e + raise HTTPError, e.message + rescue AuthenticationRequiredError + # We got a 401 from the server. Just fail. + raise + rescue HTTPError end def fetch_spec(spec) @@ -18,6 +22,10 @@ module Bundler compact_gem_list.spec(*spec) end + def available? + specs([]) + end + private def compact_gem_list diff --git a/lib/bundler/fetcher/dependency.rb b/lib/bundler/fetcher/dependency.rb index c5a5342a75..6240f7f894 100644 --- a/lib/bundler/fetcher/dependency.rb +++ b/lib/bundler/fetcher/dependency.rb @@ -4,7 +4,7 @@ require "cgi" module Bundler class Fetcher class Dependency < Base - def api_available? + def available? downloader.fetch(dependency_api_uri) rescue NetworkDownError => e raise HTTPError, e.message @@ -24,7 +24,7 @@ module Bundler log_specs(query_list) if query_list.empty? - return last_spec_list.map do |*args| + return last_spec_list.map do |args| EndpointSpecification.new(*args) end end -- cgit v1.2.1