Ah, thanks for all of those answers. It helps very much. I didn't know
I could override == instead of eql?, and this fixed the problem with
RSpec ;) Makes much more sense, and I'd rather use == than equals, or
eql. I'm glad that it's not just a bad design decision carried over
from Java that even Java should not have had in it's original design.

The symbol object makes sense. I guess one thing that is hard to
understand is that Ruby seems to keep a flyweight for some classes,
but not others. I'm guessing numbers, symbols and others have this
automatic flyweight thing going on. I suppose I can just use == for
them, and then override == in my personal classes to make them behave
the same way.

Thanks again for all the info.