読者です 読者をやめる 読者になる 読者になる

イベントをフックする

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

10-3 イベントをフックする

Module#included, extended, inherited は知っていましたが method_added, method_removed, method_undefined なんかも用意されているのですね。
ちなみに inherited は、以前 RubyMotionで使われているのを調べた 際に初めて見て感動しました。

本書の例は以下。

class SuperClass
  class << self
    def inherited(subclass)
      @classes ||= []
      @classes << subclass
    end
    def subclasses
      @classes
    end
  end
end

SuperClass.subclasses
# => nil

class Sub1 < SuperClass; end
class Sub2 < SuperClass; end
class Sub3 < SuperClass; end

SuperClass.subclasses
# => [Sub1, Sub2, Sub3]

See Also

RubyMotionの期限が切れた - rochefort's blog