Metaprogramming Ruby chapter 4