At Gavin's request here is a summary of my question and the answers I
received.

Q: I've defined a class whose objects may be ordered. What should 
my <=> method do when the "other" argument is not in the same
class?

A. Raise a TypeError exception. The <=> method in most of Ruby's 
built-in classes will raise a TypeError exception if "other" 
can't be coerced into the same class.

If you want your class to include the other comparision operators
such as ==, <=, =>, etc., consider mixing in the Comparable module.
This module implements these other comparison operators by calling
your <=> method. For example,

class TestClass
   include Comparable

   def <=>(other)
      unless other.kind_of? self.class
	      raise TypeError, "#{other.class} can't be coerced into #{self.class}"
      end

      # do whatever it takes to compare self <=> other

   end
   
   # other methods
   
end