Metaprogramming Ruby chapter 6