diff options
author | Fumiaki MATSUSHIMA <mtsmfm@gmail.com> | 2017-04-11 23:21:53 +0900 |
---|---|---|
committer | Fumiaki MATSUSHIMA <mtsmfm@gmail.com> | 2017-04-18 21:37:47 +0900 |
commit | 3adbf14d65e6e883ae1d6f8478c9ee858586e758 (patch) | |
tree | f86a8ce64641ad773c7b452b2648fba538437f69 /guides/source/action_controller_overview.md | |
parent | 8776a7139757d0b264785c774d4e7f37d4bc1ac7 (diff) | |
download | rails-3adbf14d65e6e883ae1d6f8478c9ee858586e758.tar.gz rails-3adbf14d65e6e883ae1d6f8478c9ee858586e758.tar.bz2 rails-3adbf14d65e6e883ae1d6f8478c9ee858586e758.zip |
Fix Enumerable#sum redefined warning
If we require 'active_support/core_ext/enumerable' on Ruby 2.4,
we'll see following warning because `Enumerable#sum` and `Array#sum`
are added in Ruby 2.4.
```
rails/rails/activesupport/lib/active_support/core_ext/enumerable.rb:20: warning: method redefined; discarding old sum
```
The minimal way to fix the warning is `alias sum sum`.
```
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
$ ruby -w -e "def a; end; def a; end"
-e:1: warning: method redefined; discarding old a
-e:1: warning: previous definition of a was here
$ ruby -w -e "def a; end; alias a a; def a; end"
```
But this behavior is not intended. (@amatsuda was told by @ko1)
So we should use `alias` as a meaningful way.
Ruby 2.4's `sum` (`orig_sum`) assumes an `identity` is `0` when we omit `identity`
so we can delegate to `orig_sum` with explicit `identity` only.
In a strict sense, we can detect `identity` by check instance's class
but we don't care at this time about that because calling `Enumerable#sum` is rare.
In many cases, we will call `Array#sum`.
Diffstat (limited to 'guides/source/action_controller_overview.md')
0 files changed, 0 insertions, 0 deletions