メタプログラミングがわかって来た。
わかって来ると面白いね。
module Foo def self.included(base) p "#{base} included #{self}" base.extend(ClassMethods) end module ClassMethods def acts_as_greeting class_eval do include InstanceMethods end end end module InstanceMethods def shout p 'Hello Meta Programming World!!' end end end class BarBase include Foo end class Bar < BarBase acts_as_greeting end bar = Bar.new bar.shout