class Proxy def initialize(target) @target = target end def method_missing(sym, *args, &block) @target.send(sym, *args, &block) end end class Dog def talk; puts "WOOF"; end end d = Dog.new p = Proxy.new(d) p.talk
WOOF