I haven't seen this technique in the wild before.

If you have custom sorting using the spaceship:

class Something
   def <=>(other)
     [@name, @version] <=> [other.name, other.version]
   end
end

You can't easily use the more-efficient #sort_by because you'll need  
to know how to sort Somethings, which involves duplication:

somethings.sort_by { |s| [s.name, s.version] }

Instead you can add a method that returns the thing to sort by:

class Something
   def sort_obj
     [@name, @version]
   end

   def <=>(other)
     sort_obj <=> other.sort_obj
   end
end

So now using #sort_by is easy:

somethings.sort_by { |s| s.sort_obj }

I don't know if the name #sort_obj is appropriate, but I'm not coming  
up with something better.

See also:

http://blog.segment7.net/articles/2007/10/07/sort_by-and-sort_obj

--
Poor workers blame their tools. Good workers build better tools. The
best workers get their tools to do the work for them. -- Syndicate Wars