Merge pull request #25008 from lvl0nax/as_enumarable_index_by_refactoring

Perfomance fix for ActiveSupport Enumerable#index_by
This commit is contained in:
Rafael França 2016-05-14 03:43:09 -03:00
commit 4046ac7e88

@ -34,7 +34,9 @@ def sum(identity = nil, &block)
# => { "Chade- Fowlersburg-e" => <Person ...>, "David Heinemeier Hansson" => <Person ...>, ...}
def index_by
if block_given?
Hash[map { |elem| [yield(elem), elem] }]
result = {}
each { |elem| result[yield(elem)] = elem }
result
else
to_enum(:index_by) { size if respond_to?(:size) }
end