включить новый миксин во все перечисляемые классы - PullRequest
3 голосов
/ 12 марта 2012

Я хотел бы добавить модуль ко всем перечисляемым классам.Есть ли хороший способ сделать это?

Мое решение на данный момент:

module Enumerable
  include my_module
end

class Array
  include Enumerable
end

class ____
etc...

Если я не включу новую версию Enumerable во все классы, которые включают в себя оригинальный Enumerable,они не обновляются.Есть ли лучший способ сделать это?Возможно с некоторым метапрограммированием?

Спасибо!

1 Ответ

3 голосов
/ 12 марта 2012

Насколько я знаю, вы должны написать код метода внутри Enumerable модуля

module Enumerable
    def so
        "StackOverflow!"
    end
end

a = [1, 3, 7]
a.so
#=> "StackOverflow!"
...