diff options
author | schneems <richard.schneeman@gmail.com> | 2015-06-01 18:13:12 -0500 |
---|---|---|
committer | schneems <richard.schneeman@gmail.com> | 2015-06-01 19:44:40 -0500 |
commit | e1a7260640295642108a364c2cfa56b6868d9947 (patch) | |
tree | 4ed87c1b0fd924b8a53d302c75a03cc751caa7dd /actionpack | |
parent | f7c0d133f982e4607c8b78e13fef6edafa7eb590 (diff) | |
download | rails-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.rb | 2 |
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 |