Это должно сработать:
module Enumerable
def my_each(*args, &block)
each(*args, &block)
end
end
p [1,2,3].my_each
# => #<Enumerator: [1, 2, 3]:each>
p (1..5).my_each
# => #<Enumerator: 1..5:each>
Вы не можете использовать псевдоним, потому что each
на самом деле не является методом в Enumerable
, поэтому псевдоним не нужен. Enumerable
ожидает, что каждый класс, в который он включен, предоставит его.