こんにちは。斎藤と申します。

とても細かいつっこみで恐縮なのですが、1.8のString#<=>の引数に比較
できないオブジェクトを渡したとき、nilでなくfalseが返るため、
Comparableで定義されているメソッドの結果が妙な印象を受けます。

$ ruby -ve 'p "a" <=> 1'
ruby 1.8.2 (2004-12-25) [i386-linux]
false
$ ruby -e 'p "a" < 1'
-e:1:in `<': undefined method `>' for false:FalseClass (NoMethodError)
        from -e:1

1.9と同様に<=>はnilを返して、NoMethodErrorはArgumentErrorとなる方が
いいのではないでしょうか。検討をお願いします。

--
斎藤ただし