Ruby 1.8: Hash # sort no devuelve hash sino array (¿mejor manera de hacer esto?)

En algún escenario de Ruby 1.8. Si tengo un hash

# k is name, v is order
foo = { "Jim" => 1, "bar" => 1, "joe" => 2}
sorted_by_values = foo.sort {|a, b| a[1] <==> b[1]}
#sorted_by_values is an array of array, it's no longer a hash!
sorted_by_values.keys.join ',' 

mi solución es hacer métodoto_hash para la clase de matriz.

class Array
  def to_hash(&block)
    Hash[*self.collect { |k, v|
      [k, v]
    }.flatten]
  end
end

Entonces puedo hacer lo siguiente:

sorted_by_values.to_hash.keys.join ','

¿Hay una mejor manera de hacer esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta