class LogWapper
def initialize target
@target = target
end
def method_missing(method, *value)
puts "before invoke #{method.id2name}"
@target.__send__(method, *value)
puts "after invoke #{method.id2name}"
end
end
class Hoge
def hogehoge
puts "call hogehoge"
end
end
class Fuga
def fugafuga
puts "call fugafuga"
end
end
# ---- Main ---- #
hoge = LogWapper.new(Hoge.new)
fuga = LogWapper.new(Fuga.new)
hoge.hogehoge
fuga.fugafuga
before invoke hogehoge
call hogehoge
after invoke hogehoge
before invoke fugafuga
call fugafuga
after invoke fugafuga