Learning Black Magic of Ruby Metaprogramming