Inicie y llame al servidor HTTP Ruby en el mismo script

Me pregunto cómo podría iniciar una aplicación Ruby Rack (como Sinatra) y llamarla con Net :: HTTP o similar en el mismo script. Por supuesto que podría hacer algo como ...

require 'sinatra/base'
require 'net/http'

t = Thread.new do
    class App < Sinatra::Base
        get '/' do
            'Hi!'
        end
    end

    App.run! :host => 'localhost', :port => 1234
end

sleep 2

puts Net::HTTP.start('localhost', 1234) { |http| http.get('/') }.body

t.join

puts 'Bye!'

... pero no se siente óptimo para dormir durante dos segundos, esperando que Thin comience. ¿Lo que necesito es algún tipo de devolución de llamada cuando el servidor se ha iniciado o alguien tiene alguna otra sugerencia?

Respuestas a la pregunta(3)

Su respuesta a la pregunta