Ответ Эрика был близок, но он закрывает тело ответа (не клиентское соединение, кстати), как только ваш твиттер-поток закрывается, что обычно никогда не происходит.Это должно работать:
require 'sinatra/streaming' # gem install sinatra-contrib
# ...
get '/' do
stream(:keep_open) do |out|
# ...
out.callback { http.conn.close_connection }
out.errback { http.conn.close_connection }
end
end