これつぐです。


私も作ってみました。
(短くしたため読みづらいうえに遅そう?です)

引数にkeyを優先度の高い順に並べた配列を与えます。
コメントを外せばkeyが一つのときは単に文字列でも大丈夫になります。
ちなみにいわゆる破壊的メソッドになってますがいいんですよね?

class Array
  alias _sort sort
  def sort(keys = ['name'])
#    keys=[keys].flatten
    self.filter{|e|keys.dup.filter{|k|e[k]}+[e]}.sort!.filter{|e|e.pop}
  end
end