¿Cuál es la forma correcta de implementar la igualdad en ruby?

Para una clase de estructura simple:

class Tiger
  attr_accessor :name, :num_stripes
end

¿Cuál es la forma correcta de implementar la igualdad correctamente, para garantizar que==, ===, eql?, etc., y para que las instancias de la clase jueguen bien en conjuntos, hashes, etc.

EDITAR

Además, ¿cuál es una buena manera de implementar la igualdad cuando se quiere comparar según el estado que no está expuesto fuera de la clase? Por ejemplo:

class Lady
  attr_accessor :name

  def initialize(age)
    @age = age
  end
end

Aquí me gustaría que mi método de igualdad tenga en cuenta a @age, pero la Dama no expone su edad a los clientes. ¿Tendría que usar instance_variable_get en esta situación?

Respuestas a la pregunta(3)

Su respuesta a la pregunta