Superseded by The complete guide to implementing equality in Ruby.
Topics not touched on (yet):
Transitivity and typed values. If 15 USD = 15, and 15 EUR = 15, then it must follow that 15 USD = 15 EUR, which is certainly not right.
#deconstruct
and #deconstruct_keys