パンくず
Ruby Cookbook
Classの変更をListenする
概要
Classの変更をListenする
内容
undef,remove_methodの利用時は、各メソッドをオーバーライドした際に
特定の処理を実行することが可能です。
Listenメソッド名 | 内容 |
---|---|
method_added | メソッドの追加,オーバーライド,undef時のListen |
method_removed | remove_method時のListen |
method_undefined | undef時のListen |
サンプルコード
# encoding: Windows-31J require "pp" class Hoge def hoge "hoge" end def hage "hage" end def self.method_added(sym) puts %{!! #{sym} was (re)defined. !!} end def self.method_removed(sym) puts %{!! #{sym} was removed. !!} end def self.method_undefined(sym) puts %{!! #{sym} was undefined. !!} end end hoge = Hoge.new puts hoge.hoge puts hoge.hage class Hoge def hige 'This is a new method.' end def hage 'override hage' end end override_hoge = Hoge.new puts hoge.hoge puts hoge.hage class Hoge remove_method :hage undef :hoge, :hige end
出力
hoge hage !! hige was (re)defined. !! !! hage was (re)defined. !! hoge override hage !! hage was removed. !! !! hoge was (re)defined. !! !! hoge was undefined. !! !! hige was (re)defined. !! !! hige was undefined. !!