aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorschneems <richard.schneeman@gmail.com>2015-06-01 18:13:12 -0500
committerschneems <richard.schneeman@gmail.com>2015-06-01 19:44:40 -0500
commite1a7260640295642108a364c2cfa56b6868d9947 (patch)
tree4ed87c1b0fd924b8a53d302c75a03cc751caa7dd /actionpack
parentf7c0d133f982e4607c8b78e13fef6edafa7eb590 (diff)
downloadrails-e1a7260640295642108a364c2cfa56b6868d9947.tar.gz
rails-e1a7260640295642108a364c2cfa56b6868d9947.tar.bz2
rails-e1a7260640295642108a364c2cfa56b6868d9947.zip
Use block variable instead of global
```ruby require 'benchmark/ips' Benchmark.ips do |x| x.report("$&") { "foo".sub(/f/) { $&.upcase } } x.report("block var") { "foo".sub(/f/) {|match| match.upcase } } end ``` ``` Calculating ------------------------------------- $& 48.658k i/100ms block var 49.666k i/100ms ------------------------------------------------- $& 873.156k (± 9.3%) i/s - 4.331M block var 969.744k (± 9.2%) i/s - 4.818M ``` It's faster, and gets rid of a few "magic" global variables
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/journey/router/utils.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/journey/router/utils.rb b/actionpack/lib/action_dispatch/journey/router/utils.rb
index 2b0a6575d4..d02ed96d0d 100644
--- a/actionpack/lib/action_dispatch/journey/router/utils.rb
+++ b/actionpack/lib/action_dispatch/journey/router/utils.rb
@@ -55,7 +55,7 @@ module ActionDispatch
def unescape_uri(uri)
encoding = uri.encoding == US_ASCII ? UTF_8 : uri.encoding
- uri.gsub(ESCAPED) { [$&[1, 2].hex].pack('C') }.force_encoding(encoding)
+ uri.gsub(ESCAPED) { |match| [match[1, 2].hex].pack('C') }.force_encoding(encoding)
end
protected