The Ruby Programming Language by David Flanagan, Yukihiro Matsumoto & Yukihiro Matz Matsumoto