Advanced Ruby: Behind the Magic by Chris Oliver