Если вам нужно поведение не по умолчанию, изучите sort_by
(ruby 1.8.7 +)
например. сортировать по второму элементу, затем по первому
a.sort_by {|e| [e[1], e[0]]} # => [[2, 1], [1, 2], [1, 3], [2, 3], [1, 4]]
или сортировка по возрастанию первого элемента, а затем по убыванию второго элемента
a.sort_by {|e| [e[0], -e[1]]} # => [[1, 4], [1, 3], [1, 2], [2, 3], [2, 1]]