diff options
| author | Jack Nagel | 2014-09-04 01:20:42 -0500 |
|---|---|---|
| committer | Jack Nagel | 2014-09-04 01:28:46 -0500 |
| commit | e5ea0bcd65d438507161c277acb3b6a10268a2ed (patch) | |
| tree | 0d3a5a0a927129139a05176a46399cb8b0717e20 | |
| parent | d3150f3a06bde15c7371f18f2bae2d9dd576fc93 (diff) | |
| download | brew-e5ea0bcd65d438507161c277acb3b6a10268a2ed.tar.bz2 | |
Hack around Zlib constant conflict
| -rw-r--r-- | Library/Homebrew/utils.rb | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index 66dcc1bd9..293fe0d06 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -305,7 +305,7 @@ module GitHub extend self # This is a no-op if the user is opting out of using the GitHub API. return if ENV['HOMEBREW_NO_GITHUB_API'] - require 'net/https' # for exception classes below + safely_load_net_https default_headers = { "User-Agent" => HOMEBREW_USER_AGENT, @@ -402,4 +402,24 @@ module GitHub extend self uri = URI.parse("https://api.github.com/repos/#{user}/#{repo}") open(uri) { |json| json["private"] } end + + private + + # If the zlib formula is loaded, TypeError will be raised when we try to load + # net/https. This monkeypatch prevents that and lets Net::HTTP fall back to + # the non-gzip codepath. + def safely_load_net_https + return if defined?(Net::HTTP) + if defined?(Zlib) && RUBY_VERSION >= "1.9" + require "net/protocol" + http = Class.new(Net::Protocol) do + def self.require(lib) + raise LoadError if lib == "zlib" + super + end + end + Net.const_set(:HTTP, http) + end + require "net/https" + end end |
