Setup a Faraday Proxy
By · PostedI like verbose logs. If I’m working with a service that ultimately communicates via HTTP, I like seeing the raw HTTP logs. I very often run a proxy in devlopment to look at raw HTTP traffic. Something like Charles is easy to use for browser traffic. However, when you want to pass the traffic of a Ruby HTTP client through your proxy you need to do a bit of hacking. The normal method is to overwrite the def connection
definition with a monkey patch where the client sets up an HTTP connection. Something like this.
But I wanted a solution that was more general and didn’t require knowing about the client talking to Faraday. I also didn’t want to monkey patch the entire Faraday::Connection
class. So I wrote up a little monkey patch that wraps the Faraday::Connection initialize
method injecting in your proxy settings. If you toss this code into your app (if it’s a Rails app in an initializer) then all Faraday connections should go through your proxy. Cool!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE module Faraday class Connection alias_method :old_initialize, :initialize def initialize(url = nil, options = {}) proxy = 'http://127.0.0.1:3128' (url.is_a?(Hash) ? url : options).merge!(proxy: proxy) old_initialize(url, options) end end end |
Change line 8 to be whatever path and port your proxy is running on.
You should get a SSL verification error if you are making HTTPS calls to external services. You can disable this SSL verification during debugging with line 1.
blog comments powered by Disqus