03 December 2012 P4.0 (Printing)

For a complete list of updates and fixes, please see errata.

17 May 2011 P3.0 (Printing)

  • Third Printing

03 June 2010 P2.0 (Printing)

Second Printing

29 January 2010 P1.0 (Printing)

  • First Printing

17 November 2009 B1.5

Welcome to the “hot for printing” beta of Metaprogramming Ruby! This is the last beta before we go to the printers, and it contains miscellaneous errata and fixes.

29 September 2009 B1.4

Welcome to the “cover to cover” beta of Metaprogramming Ruby. We’re content complete now!

The new chapter in this beta is all about safety. It explores some of the techniques you need to write metaprogramming code that you can trust. It also looks at Rails’ unit tests, and it shows you how Rails (and Rake) try to avoid involuntary Monkeypatching.

09 September 2009 B1.3

Welcome to the “end of summer” beta of Metaprogramming Ruby.

Together with the usual errata and fixes, this beta includes a peek into some of the most wonderful (and sometimes, the darkest) corners of the ActiveRecord source code. Be ready to look at a lot of juicy source code!

13 August 2009 B1.2

Welcome to the midsummer beta of Metaprogramming Ruby! Apart from new fixes, sidebars, figures, and a few improved examples, this beta includes a good cleanup of Blocks and new spells Shared Scope and Scope Gate.

29 July 2009 B1.01

  • I’ve added the first of three planned chapters on Metaprogramming in Rails, the second part of this book. It shows you how you can get started with the Rails source code, and how the Rails authors used metaprogramming to define the core structure of the ActiveRecord library.
  • The Instance Eval section was confusing and inaccurate, so I refactored it into something clearer.
  • The ISBN example wasn’t a great design, and it was also naïve (ISBN codes are much more complicated than I suspected)—so I changed the example to something more generic.
  • Finally, I fixed dozens of typos and errata, most of them spotted by readers. Thank you so much, and keep them coming!

15 July 2009 B1.0