Wow. I just watched Dave Thomas' talk <a href="http://www.infoq.com/presentations/metaprogramming-ruby">Ruby Metaprogramming: Extending Ruby for Fun and Profit</a> and it explained so many things.

It's quite worth watching if you like Ruby and don't know about metaprogramming and Ruby hooks and what 'self' means, fully.