Programming Ruby 1.9. The Pragmatic Programmers Guide.