Ruby の標準ライブラリ「io/wait」は、IO オブジェクトに対してready?
、利用可能な入力がある場合に非 nil を返し、それ以外の場合に nil または false を返すメソッドを提供します。sysread
やのようないくつかのメソッドは、やsyswrite
などのより高いレベルのメソッドで安全に使用できないことを知っており、より高いレベルのメソッドと混合しても安全かどうかを知りたいと思っていました。ready メソッドはかなり便利で、おそらく に依存するよりも洗練されているように見えますが、驚くべきことに、あまり使用されていません。ドキュメントには、 orで使用するのが安全でないことを示すものは何もありません。ソケットの読み取り/書き込み時に最終的に予期しない動作を引き起こす可能性のある互換性のないメソッドを混在させていないことを確認したいだけです。gets
read
ready?
IO.select
read
gets
編集:Ruby 1.8.7を使用していることに言及する必要があると思います。