TL;DR: Subclassing core classes in Ruby can lead to unexpected side effects. I suggest composition over inheritance in all these cases.
If you’re familiar with the concept of subclassing, skip down to “The Problem.”
In Ruby, you can make your own classes:
class List end
You can also make subclasses of those classes:
class OrderedList < List end puts OrderedList.new.kind_of?(List) # => true
Now, subclassing represents an “is a”...