0
Ruby UDPSocket
をIO
オブジェクトで多態的に使用するためのベストプラクティスは何ですか?私は自分のライブラリーのためのシリアライゼーションクラスを書いて、ネットワークがFile
またはStringIO
オブジェクトと同じソケット扱いたい、とUDPSocket
をIO
から継承んが、私はwrite_nonblock
しようとすると、ソケットはErrno::EDESTADDRREQ
提起しています:Ruby UDPSocketをポリモーフィックにIOで使用するにはどうすればよいですか?
2.4.1 :1 > require 'socket'
=> true
2.4.1 :2 > sock = UDPSocket.new
=> #<UDPSocket:fd 4>
2.4.1 :3 > sock.bind('127.0.0.1', 0)
=> 0
2.4.1 :4 > sock.write_nonblock 'nonblock'
Errno::EDESTADDRREQ: Destination address required
from <internal:prelude>:136:in `__write_nonblock'
from <internal:prelude>:136:in `write_nonblock'
from (irb):4
from /usr/local/rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'