From aaaff369da1ebc83fe2a202e5bbbd98c1eda2f42 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 11 Jun 2014 11:36:50 -0700 Subject: cache protocol on the stack to reduce options hash lookups --- actionpack/lib/action_dispatch/http/url.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/actionpack/lib/action_dispatch/http/url.rb b/actionpack/lib/action_dispatch/http/url.rb index c4fd05481a..6444fa6f78 100644 --- a/actionpack/lib/action_dispatch/http/url.rb +++ b/actionpack/lib/action_dispatch/http/url.rb @@ -79,17 +79,17 @@ module ActionDispatch options[:port] = match[3] unless options.key?(:port) end - options[:protocol] = normalize_protocol(options) - options[:host] = normalize_host(options) + protocol = normalize_protocol options[:protocol] + options[:host] = normalize_host(options) - result = options[:protocol].dup + result = protocol.dup if options[:user] && options[:password] result << "#{Rack::Utils.escape(options[:user])}:#{Rack::Utils.escape(options[:password])}@" end result << options[:host] - normalize_port(options[:port], options[:protocol]) { |port| + normalize_port(options[:port], protocol) { |port| result << ":#{port}" } @@ -104,8 +104,8 @@ module ActionDispatch (options[:subdomain] == true || !options.key?(:subdomain)) && options[:domain].nil? end - def normalize_protocol(options) - case options[:protocol] + def normalize_protocol(protocol) + case protocol when nil "http://" when false, "//" @@ -113,7 +113,7 @@ module ActionDispatch when PROTOCOL_REGEXP "#{$1}://" else - raise ArgumentError, "Invalid :protocol option: #{options[:protocol].inspect}" + raise ArgumentError, "Invalid :protocol option: #{protocol.inspect}" end end -- cgit v1.2.3