Method Combination Hooks can be added to arbitrary method class Foo def foo:pre(*args) p "pre" end def foo:post(*args) p "post" end def foo:wrap(*args) p "wrap pre" super p "wrap post" end def foo(*args) p "foo" end end Foo.new.foo wrap pre pre foo post wrap post