summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Arko <andre@arko.net>2013-02-13 08:42:35 -0800
committerAndre Arko <andre@arko.net>2013-02-13 08:42:52 -0800
commitea0b8e097128ec2f7e81ea3b7b2df84b463d1930 (patch)
treea80db85620427e3dbb1c36c7a11e2c3e8b42d7dd
parent727e64d28b62daf16a24cece987f484c01c82ed4 (diff)
downloadbundler-ea0b8e097128ec2f7e81ea3b7b2df84b463d1930.tar.gz
handle 413 gracefully in verbose mode
-rw-r--r--lib/bundler/fetcher.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/bundler/fetcher.rb b/lib/bundler/fetcher.rb
index cac36ad2dc..085a2a2393 100644
--- a/lib/bundler/fetcher.rb
+++ b/lib/bundler/fetcher.rb
@@ -7,6 +7,7 @@ module Bundler
REDIRECT_LIMIT = 5
# how long to wait for each gemcutter API call
API_TIMEOUT = 10
+ class FallbackError < Bundler::HTTPError; end
attr_reader :has_api
@@ -79,8 +80,11 @@ module Bundler
# new line now that the dots are over
Bundler.ui.info "" unless Bundler.ui.debug?
- Bundler.ui.debug "Error during API request. #{e.class}: #{e.message}"
- Bundler.ui.debug e.backtrace.join(" ")
+ if FallbackError === e
+ Bundler.ui.debug "API refused request: #{e.message}"
+ else
+ Bundler.ui.debug "Error during API request. #{e.class}: #{e.message}"
+ end
Bundler.ui.info "Fetching full source index from #{strip_user_pass_from_uri(@remote_uri)}"
specs = fetch_all_remote_specs
@@ -152,9 +156,10 @@ module Bundler
when Net::HTTPSuccess
Bundler.ui.debug("HTTP Success")
response.body
+ when Net::HTTPRequestEntityTooLarge
+ raise FallbackError, response.body
else
- Bundler.ui.debug("HTTP Error")
- raise HTTPError
+ raise HTTPError, "#{response.class}: #{response.body}"
end
end