
Eloquent Ruby (Addison-Wesley Professional Ruby Series)

To understand Ruby programs—both your own and others’—you need to know about Ruby’s notion of a current default object, known by the keyword self.
Joe Leo • The Well-Grounded Rubyist
Inheritance is a kind of downward-chaining relationship between two classes (the superclass and the subclass), whereby one class “inherits” from another, and the instances of the subclass acquire the behaviors—the methods—defined in the superclass.
Joe Leo • The Well-Grounded Rubyist
Polished Ruby Programming: Build better software with more intuitive, maintainable, scalable, and high-performance Ruby code
amazon.com
Again, the logic required to figure out what object owns a given instance variable is simple and consistent: every instance variable belongs to whatever object is playing the role of self at the moment the code containing the instance variable is executed.