From 2daabe9863bd430a696020419d3534d22cac9fbb Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Tue, 24 Jun 2014 20:59:26 -0500 Subject: [PATCH] Fix uninitialized constant error in GitHub.open The error handling depends on side effects of `require "net/https"`, so it should be wrapped in an explicit begin block. cf. Homebrew/homebrew#30407. --- Library/Homebrew/utils.rb | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index ab186eedd9..6684b3696e 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -311,15 +311,18 @@ module GitHub extend self } default_headers['Authorization'] = "token #{HOMEBREW_GITHUB_API_TOKEN}" if HOMEBREW_GITHUB_API_TOKEN - Kernel.open(url, default_headers.merge(headers)) do |f| - yield Utils::JSON.load(f.read) + + begin + Kernel.open(url, default_headers.merge(headers)) do |f| + yield Utils::JSON.load(f.read) + end + rescue OpenURI::HTTPError => e + handle_api_error(e) + rescue SocketError, OpenSSL::SSL::SSLError => e + raise Error, "Failed to connect to: #{url}\n#{e.message}", e.backtrace + rescue Utils::JSON::Error => e + raise Error, "Failed to parse JSON response\n#{e.message}", e.backtrace end - rescue OpenURI::HTTPError => e - handle_api_error(e) - rescue SocketError, OpenSSL::SSL::SSLError => e - raise Error, "Failed to connect to: #{url}\n#{e.message}", e.backtrace - rescue Utils::JSON::Error => e - raise Error, "Failed to parse JSON response\n#{e.message}", e.backtrace end def handle_api_error(e)