Resta valores en hash de valores correspondientes en otro hash

Me gustaría poder restar dos hashes y obtener un tercer hash en Ruby.

Los dos hashes se ven así:

h1 = {"Cat" => 100, "Dog" => 5, "Bird" => 2, "Snake" => 10}
h1.default = 0

h2 = {"cat" => 50, "dog" => 3, "BIRD" => 4, "Mouse" => 75, "Snake" => 10}
h2.default = 0

Me gustaría poder llamar a un método en h1 como este:

h1.difference(h2)

y obtener este hash como resultado:

{"Cat" => 50, "Dog" => 2, "BIRD" => -2, "Mouse" => -75}

Me gustaría crear un nuevo hash con claves tanto de hash como de que los valores del nuevo hash sean el valor de la clave en el primer hash menos el valor de esa clave en el segundo hash. El problema es que me gustaría que este método Hash funcionara independientemente del caso de las claves. En otras palabras, me gustaría que "Cat" coincida con "cat".

Esto es lo que tengo hasta ahora:

class Hash
  def difference(another_hash)
    (keys + another_hash.keys).map { |key| key.strip }.uniq.inject(Hash.new(0)) { |acc, key| acc[key] = (self[key] - another_hash[key]); acc }.delete_if { |key, value| value == 0 }
  end
end

Esto está bien, pero, desafortunadamente, el resultado no es lo que quiero.

Cualquier ayuda sería apreciada.

Respuestas a la pregunta(5)

Su respuesta a la pregunta