このコードを実行する
rvm 1.8.7,1.9.3-p547 do ruby -r socket -e "puts TCPSocket == TCPsocket"
なぜRuby 1.8.7でこれが真実に戻ってくるのでしょうか?
回答:
回答№1は5ソース考古学のビットは、 もともとクラス名は TCPsocket
(小文字 s
)。その後、それはでした 名前が変更されました TCPSocket
(大文字 s
)、古い名前で定数が設定されました。これはRuby 1.8.7のケースで、そのバージョンでは TCPsocket
そして TCPSocket
同じクラスを参照していますので、等価として比較します。
後で 元の名前が削除されました、残すだけ TCPSocket
。これは1.9以降のケースであるため、最近のバージョンでは TCPsocket
その結果、 uninitialized constant
エラー。
なぜか、私はMatzがもともと使っていたと思う TCPsocket
後でそれを認識した TCPSocket
より良い名前でしたが、以前の名前は互換性のためにしばらく利用可能でした。