1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/actionpack/lib
Viktar Basharymau 453cd7b617 Relpace =~ Regexp.new str with .include? str in AC::Base#_valid_action_name?
Because it is more natural way to test substring inclusion. Also, in
this particular case it is much faster.

In general, using `Regexp.new str` for such kind of things is dangerous.
The string must be escaped, unless you know what you're doing. Example:

    Regexp.new "\\" # HELLO WINDOWS
    # RegexpError: too short escape sequence: /\/

The right way to do this is escape the string

    Regexp.new Regexp.escape "\\"
    # => /\\/

Here is the benchmark showing how faster `include?` call is.

```
require 'benchmark/ips'

Benchmark.ips do |x|
  x.report('include?') { !"index".to_s.include? File::SEPARATOR }
  x.report('   !~   ') { "index" !~ Regexp.new(File::SEPARATOR) }
end

__END__
Calculating -------------------------------------
            include?     75754 i/100ms
               !~        21089 i/100ms
-------------------------------------------------
            include?  3172882.3 (±4.5%) i/s -   15832586 in   5.000659s
               !~      322918.8 (±8.6%) i/s -    1602764 in   4.999509s
```

Extra `.to_s` call is needed to handle the case when `action_name` is
`nil`. If it is omitted, some tests fail.
2014-06-19 18:39:58 +03:00
..
abstract_controller Relpace =~ Regexp.new str with .include? str in AC::Base#_valid_action_name? 2014-06-19 18:39:58 +03:00
action_controller [ci skip] /javascript/ ~> JavaScript 2014-06-17 02:07:07 +05:30
action_dispatch Merge pull request #15744 from mmozuras/special_keys_set 2014-06-16 08:35:00 +02:00
action_pack Introduce Rails.gem_version 2014-03-05 12:37:38 -05:00
abstract_controller.rb No need for .rb extension 2013-08-25 11:39:09 +02:00
action_controller.rb Remove deprecated cattr_* requires 2013-12-03 00:28:15 +02:00
action_dispatch.rb ActionDispatch::Head was replaced by Rack::Head. Closes #14191. 2014-02-25 11:20:12 +01:00
action_pack.rb update copyright notices to 2014. [ci skip] 2014-01-01 23:59:49 +05:30