Beginning Ruby: From Novice To Professional by Peter Cooper