Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
instance method
Gem::RemoteFetcher#fetch_path
fetch_path(uri, mtime = nil, head = false)
lib/rubygems/remote_fetcher.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.1.0-preview1/lib/rubygems/remote_fetcher.rb, line 266
def fetch_path(uri, mtime = nil, head = false)
uri = Gem::Uri.new uri
method = {
"http" => "fetch_http",
"https" => "fetch_http",
"s3" => "fetch_s3",
"file" => "fetch_file",
}.fetch(uri.scheme) { raise ArgumentError, "uri scheme is invalid: #{uri.scheme.inspect}" }
data = send method, uri, mtime, head
if data && !head && uri.to_s.end_with?(".gz")
begin
data = Gem::Util.gunzip data
rescue Zlib::GzipFile::Error
raise FetchError.new("server did not return a valid file", uri)
end
end
data
rescue Gem::Timeout::Error, IOError, SocketError, SystemCallError,
*(OpenSSL::SSL::SSLError if Gem::HAVE_OPENSSL) => e
raise FetchError.new("#{e.class}: #{e}", uri)
end
Downloads uri and returns it as a String.