Vuoi che i tuoi oggetti si ordinino e si confrontino come i numeri? Basta definire l'operatore "astronave" <=> e includere il modulo Comparable.

class Launch
  include Comparable
  attr_reader :net

  def initialize(net) = @net = net

  # <=> restituisce -1, 0 o 1
  def <=>(other)
    net <=> other.net
  end
end

lanci = [Launch.new(3), Launch.new(1), Launch.new(2)]
lanci.sort          # ordinati per data!
lanci.min           # il piu' imminente
lanci.max
Launch.new(1) < Launch.new(2)  # true

Definendo un solo metodo (<=>), Comparable te ne regala una decina: <, >, ==, between?, clamp. Allo stesso modo, includere Enumerable e definire each ti dà gratis map, select, sort, min, max su una tua classe collezione.

È il potere dei mixin: implementi il metodo minimo (<=> o each) e Ruby costruisce tutto il resto. I tuoi oggetti si comportano come quelli nativi.