Created
January 8, 2016 19:55
-
-
Save darrenboyd/c7543b9c6dc31fbddce0 to your computer and use it in GitHub Desktop.
Issues with RestClient responses from Exceptions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
################################################################################ | |
<!DOCTYPE html> | |
<html lang=en> | |
<meta charset=utf-8> | |
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width"> | |
<title>Error 405 (Method Not Allowed)!!1</title> | |
<style> | |
*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px} | |
</style> | |
<a href=//www.google.com/><span id=logo aria-label=Google></span></a> | |
<p><b>405.</b> <ins>That’s an error.</ins> | |
<p>The request method <code>POST</code> is inappropriate for the URL <code>/</code>. <ins>That’s all we know.</ins> | |
################################################################################ | |
################################################################################ | |
[warning] The response contained in an RestClient::Exception is now a RestClient::Response instead of a Net::HTTPResponse, please update your code | |
<!DOCTYPE html> | |
<html lang=en> | |
<meta charset=utf-8> | |
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width"> | |
<title>Error 405 (Method Not Allowed)!!1</title> | |
<style> | |
*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px} | |
</style> | |
<a href=//www.google.com/><span id=logo aria-label=Google></span></a> | |
<p><b>405.</b> <ins>That’s an error.</ins> | |
<p>The request method <code>POST</code> is inappropriate for the URL <code>/</code>. <ins>That’s all we know.</ins> | |
################################################################################ | |
################################################################################ | |
restclient-test.rb:17:in `method_missing': MyMethodMissing in "<!DOCTYPE html>\n<html lang=en>\n <meta charset=utf-8>\n <meta name=viewport content=\"initial-scale=1, minimum-scale=1, width=device-width\">\n <title>Error 405 (Method Not Allowed)!!1</title>\n <style>\n *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\n </style>\n <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n <p><b>405.</b> <ins>That\xE2\x80\x99s an error.</ins>\n <p>The request method <code>POST</code> is inappropriate for the URL <code>/</code>. <ins>That\xE2\x80\x99s all we know.</ins>\n": to_hash() (RuntimeError) | |
restclient-test.rb:26:in `initialize' | |
restclient-test.rb:26:in `new' | |
restclient-test.rb:26:in `<main>' | |
from restclient-test.rb:26:in `initialize' | |
from restclient-test.rb:26:in `new' | |
from restclient-test.rb:26:in `<main>' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'restclient' | |
# Google is nice enough to provide an easy way to get a response from an excpetion | |
r = (begin; RestClient.post('http://www.google.com', ''); rescue => e; e.response; end) | |
puts "#" * 80 | |
puts r.body | |
puts "#" * 80, "\n" | |
puts "#" * 80 | |
puts String.new(r.body) | |
puts "#" * 80, "\n" | |
# Replace the method_missing the RestClient implements, in order to | |
# get a stacktrace. | |
module RestClient | |
module ResponseForException | |
def method_missing(method, *args) | |
stack = caller.join("\n") | |
raise "MyMethodMissing in #{self.inspect}: #{method}(#{args.map(&:inspect).join(', ')})\n#{stack}" | |
end | |
end | |
end | |
# Get a new response, which will have the changed method_missing override. | |
r = (begin; RestClient.post('http://www.google.com', ''); rescue => e; e.response; end) | |
puts "#" * 80 | |
puts String.new(r.body) | |
puts "#" * 80, "\n" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment