Learn Ruby The Hard Way Release 2.0 by Zed A. Shaw and Rob Sobers