mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/rubygems: Update to RubyGems 2.4.1 master(713ab65)
Complete history at: https://github.com/rubygems/rubygems/blob/master/History.txt#L3-L216 * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e548c09d42
commit
4de117a615
153 changed files with 5400 additions and 981 deletions
|
@ -28,6 +28,10 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
|||
pick_sets if @remote and @sets.empty?
|
||||
|
||||
super
|
||||
rescue Gem::RemoteFetcher::FetchError => e
|
||||
replace_failed_api_set e
|
||||
|
||||
retry
|
||||
end
|
||||
|
||||
def prefetch reqs # :nodoc:
|
||||
|
@ -46,5 +50,29 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
|||
end
|
||||
end
|
||||
|
||||
##
|
||||
# Replaces a failed APISet for the URI in +error+ with an IndexSet.
|
||||
#
|
||||
# If no matching APISet can be found the original +error+ is raised.
|
||||
#
|
||||
# The calling method must retry the exception to repeat the lookup.
|
||||
|
||||
def replace_failed_api_set error # :nodoc:
|
||||
uri = error.uri
|
||||
uri = URI uri unless URI === uri
|
||||
uri.query = nil
|
||||
|
||||
raise error unless api_set = @sets.find { |set|
|
||||
Gem::Resolver::APISet === set and set.dep_uri == uri
|
||||
}
|
||||
|
||||
index_set = Gem::Resolver::IndexSet.new api_set.source
|
||||
|
||||
@sets.map! do |set|
|
||||
next set unless set == api_set
|
||||
index_set
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue