I finished this book earlier this week. The title speaks for itself - it's all about metaprogramming in Ruby. Perrotta goes through the Ruby object model, instance methods, missing methods, eigenclasses - pretty much everything you'd expect if you want to know how you can make Ruby programs extremely dynamic. In fact, Perrotta states that, to be an effective Ruby developer, you need to understand how metaprogramming works - e.g. Rails uses every metaprogramming trick ("spell") in the book.

Overall I liked the book. Perrotta knows his stuff, and even though I've never written a line of Ruby code, I feel like I already know a fair amount of stuff (though I have no delusions about even calling myself a novice at Ruby). However, the conversational style was almost too conversational at times, and I didn't care for the hand-drawn figures. I would've preferred nice, stylized figures where I didn't have to try and interpret someone's handwriting.

I should mention that I'm about to go down the path of writing another book called "Metaprogramming .NET". My intent in reading this book wasn't to try and "steal" any ideas; it's obvious there's something to Ruby and I wanted to be at least aware of the core mechanisms of Ruby, which this book offered. Frankly, after I read it I didn't see much that I could lift anyway if I wanted to be that unethical. It's not a cut on the material; it's just that the ideas I have for my portions of the book won't be anything like what Perrotta did.

It's hard for me to recommend this book because, again, I'm not a Ruby developer. That said, I liked the book, and I definitely got something out of it.