[rb] make it easier to work with proxies in default http client
diff --git a/rb/lib/selenium/webdriver/remote/http/default.rb b/rb/lib/selenium/webdriver/remote/http/default.rb
index c2f9ac4..5bff8a0 100644
--- a/rb/lib/selenium/webdriver/remote/http/default.rb
+++ b/rb/lib/selenium/webdriver/remote/http/default.rb
@@ -35,9 +35,11 @@
           # Debuggers that freeze the process will not be able to evaluate any operations if that happens.
           # @param [Numeric] open_timeout - Open timeout to apply to HTTP client.
           # @param [Numeric] read_timeout - Read timeout (seconds) to apply to HTTP client.
-          def initialize(open_timeout: nil, read_timeout: nil)
+          # @param [Proxy] proxy - Where to route HTTP calls sent by client.
+          def initialize(open_timeout: nil, read_timeout: nil, proxy: nil)
             @open_timeout = open_timeout
             @read_timeout = read_timeout
+            @proxy = proxy
             super()
           end
 
@@ -45,6 +47,18 @@
             @http&.finish
           end
 
+          def proxy
+            @proxy ||= begin
+              proxy = ENV.fetch('http_proxy', nil) || ENV.fetch('HTTP_PROXY', nil)
+              no_proxy = ENV.fetch('no_proxy', nil) || ENV.fetch('NO_PROXY', nil)
+
+              if proxy
+                proxy = "http://#{proxy}" unless proxy.start_with?('http://')
+                Proxy.new(http: proxy, no_proxy: no_proxy)
+              end
+            end
+          end
+
           private
 
           def http
@@ -135,18 +149,6 @@
             end
           end
 
-          def proxy
-            @proxy ||= begin
-              proxy = ENV.fetch('http_proxy', nil) || ENV.fetch('HTTP_PROXY', nil)
-              no_proxy = ENV.fetch('no_proxy', nil) || ENV.fetch('NO_PROXY', nil)
-
-              if proxy
-                proxy = "http://#{proxy}" unless proxy.start_with?('http://')
-                Proxy.new(http: proxy, no_proxy: no_proxy)
-              end
-            end
-          end
-
           def use_proxy?
             return false if proxy.nil?
 
diff --git a/rb/spec/unit/selenium/webdriver/remote/http/default_spec.rb b/rb/spec/unit/selenium/webdriver/remote/http/default_spec.rb
index 8ed74ae..9eb305e 100644
--- a/rb/spec/unit/selenium/webdriver/remote/http/default_spec.rb
+++ b/rb/spec/unit/selenium/webdriver/remote/http/default_spec.rb
@@ -24,6 +24,7 @@
     module Remote
       module Http
         describe Default do
+          let(:proxy) { Proxy.new(http: 'http://foo:[email protected]:8080') }
           let(:client) do
             client = described_class.new
             client.server_url = URI.parse('http://example.com')
@@ -39,7 +40,7 @@
           end
 
           describe '#initialize' do
-            let(:client) { described_class.new(read_timeout: 22, open_timeout: 23) }
+            let(:client) { described_class.new(read_timeout: 22, open_timeout: 23, proxy: proxy) }
 
             it 'accepts read timeout options' do
               expect(client.open_timeout).to eq 23
@@ -48,10 +49,14 @@
             it 'accepts open timeout options' do
               expect(client.read_timeout).to eq 22
             end
+
+            it 'accepts a proxy' do
+              expect(client.send(:proxy)).to eq proxy
+            end
           end
 
           it 'uses the specified proxy' do
-            client.proxy = Proxy.new(http: 'http://foo:[email protected]:8080')
+            client.proxy = proxy
             http = client.send :http
 
             expect(http).to be_proxy