metaprogramming ruby 2 notes & exercises