include / extend と super
勘違いしてた.include / extend したメソッド(?)を上書きしたときも,上書きされたメソッドを super で参照できるのか.
extend と super を使ったどーでもいい例.
def mod(i) Module.new do define_method :f do super() + [i] end end end module B def f [] end end module M extend B 5.times do |i| extend mod(i) end def self.f super() + [-1] end end p M.f # => [0, 1, 2, 3, 4, -1] o = Object.new o.extend B 5.times do |i| o.extend mod(i) end p o.f # => [0, 1, 2, 3, 4]