$stderr.puts "loading" require 'sinatra' require_relative 'rainbows' if RUBY_ENGINE == 'ruby' configure do set :foo, :bar end get '/app_file' do content_type :txt settings.app_file end get '/ping' do 'pong' end get '/stream' do stream do |out| sleep 0.1 out << "a" sleep 1.2 out << "b" end end get '/mainonly' do object = Object.new begin object.send(:get, '/foo') { } 'false' rescue NameError 'true' end end set :out, nil get '/async' do stream(:keep_open) { |o| (settings.out = o) << "hi!" } end get '/send' do settings.out << params[:msg] if params[:msg] settings.out.close if params[:close] "ok" end get '/send_file' do file = File.expand_path '../../views/a/in_a.str', __FILE__ send_file file end get '/streaming' do headers['Content-Length'] = '46' stream do |out| out << "It's gonna be legen -\n" sleep 0.5 out << " (wait for it) \n" puts headers sleep 1 out << "- dary!\n" end end class Subclass < Sinatra::Base set :out, nil get '/subclass/async' do stream(:keep_open) { |o| (settings.out = o) << "hi!" } end get '/subclass/send' do settings.out << params[:msg] if params[:msg] settings.out.close if params[:close] "ok" end end use Subclass $stderr.puts "starting"