Another good read is the book "The Design and Evolution of C++". http://www.stroustrup.com/dne.html It does provide a very clear rationale why C++ became the way it was (C++98), given the design goals and the constraint of being C compatible as much as possible, both in language and compiler toolchains.
It was also a fantastic way to learn the language. Going through all the design decisions, the underlying implementation, the trade offs helped me build a mental model that massively increased my productivity and intellectual happiness. I yearn for similar works for other languages (e.g., clojure).
http://www.amazon.com/Ruby-Programming-Language-David-Flanag...
I think it's the most relevant Ruby book, because it documents the basic thinking and mental approach of the language, which is actually very stable.