diff options
Diffstat (limited to 'actionpack/lib')
| -rw-r--r-- | actionpack/lib/action_controller/test_case.rb | 30 | ||||
| -rw-r--r-- | actionpack/lib/action_dispatch/journey/router/utils.rb | 12 | 
2 files changed, 20 insertions, 22 deletions
| diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb index 8fd11d7cf2..a18c35e3e9 100644 --- a/actionpack/lib/action_controller/test_case.rb +++ b/actionpack/lib/action_controller/test_case.rb @@ -30,25 +30,21 @@ module ActionController        end        @_subscribers << ActiveSupport::Notifications.subscribe("!render_template.action_view") do |_name, _start, _finish, _id, payload| -        path = payload[:virtual_path] -        next unless path -        partial = path =~ /^.*\/_[^\/]*$/ +        if virtual_path = payload[:virtual_path] +          partial = virtual_path =~ /^.*\/_[^\/]*$/ -        if partial -          @_partials[path] += 1 -          @_partials[path.split("/").last] += 1 -        end - -        @_templates[path] += 1 -      end - -      @_subscribers << ActiveSupport::Notifications.subscribe("!render_template.action_view") do |_name, _start, _finish, _id, payload| -        next if payload[:virtual_path] # files don't have virtual path +          if partial +            @_partials[virtual_path] += 1 +            @_partials[virtual_path.split("/").last] += 1 +          end -        path = payload[:identifier] -        if path -          @_files[path] += 1 -          @_files[path.split("/").last] += 1 +          @_templates[virtual_path] += 1 +        else +          path = payload[:identifier] +          if path +            @_files[path] += 1 +            @_files[path.split("/").last] += 1 +          end          end        end      end diff --git a/actionpack/lib/action_dispatch/journey/router/utils.rb b/actionpack/lib/action_dispatch/journey/router/utils.rb index ac4ecb1e65..2b0a6575d4 100644 --- a/actionpack/lib/action_dispatch/journey/router/utils.rb +++ b/actionpack/lib/action_dispatch/journey/router/utils.rb @@ -25,9 +25,10 @@ module ActionDispatch          # http://tools.ietf.org/html/rfc3986          class UriEncoder # :nodoc:            ENCODE   = "%%%02X".freeze -          ENCODING = Encoding::US_ASCII -          EMPTY    = "".force_encoding(ENCODING).freeze -          DEC2HEX  = (0..255).to_a.map{ |i| ENCODE % i }.map{ |s| s.force_encoding(ENCODING) } +          US_ASCII = Encoding::US_ASCII +          UTF_8    = Encoding::UTF_8 +          EMPTY    = "".force_encoding(US_ASCII).freeze +          DEC2HEX  = (0..255).to_a.map{ |i| ENCODE % i }.map{ |s| s.force_encoding(US_ASCII) }            ALPHA = "a-zA-Z".freeze            DIGIT = "0-9".freeze @@ -53,12 +54,13 @@ module ActionDispatch            end            def unescape_uri(uri) -            uri.gsub(ESCAPED) { [$&[1, 2].hex].pack('C') }.force_encoding(uri.encoding) +            encoding = uri.encoding == US_ASCII ? UTF_8 : uri.encoding +            uri.gsub(ESCAPED) { [$&[1, 2].hex].pack('C') }.force_encoding(encoding)            end            protected              def escape(component, pattern) -              component.gsub(pattern){ |unsafe| percent_encode(unsafe) }.force_encoding(ENCODING) +              component.gsub(pattern){ |unsafe| percent_encode(unsafe) }.force_encoding(US_ASCII)              end              def percent_encode(unsafe) | 
