次のコードがあり、WEBrickインスタンスがフォークされており、webrickが起動するまで待ってから、残りのコードを続行します。
require 'webrick'
pid = fork do
server = WEBrick::HTTPServer.new({:Port => 3333, :BindAddress => "localhost"})
trap("INT") { server.shutdown }
sleep 10 # here is code that take some time to setup
server.start
end
# here I want to wait till the fork is complete or the WEBrick server is started and accepts connections
puts `curl localhost:3333 --max-time 1` # then I can talk to the webrick
Process.kill('INT', pid) # finally the webrick should be killed
では、フォークが完了するまで、またはWEBrickが接続を受け入れる準備ができるまで待つにはどうすればよいでしょうか。IO.pipe
とリーダーとライターを扱うコードを見つけました。しかし、それはwebrickがロードされるのを待ちません。
残念ながら、この特定のケースについては何も見つかりませんでした。誰かが助けてくれることを願っています。