def WebApp(&block)
$SAFE = 1 if $SAFE < 1
manager = WebApp::Manager.new(block)
if defined?(Apache::Request) && Apache.request.kind_of?(Apache::Request)
run = lambda { manager.run_rbx }
elsif Thread.current[:webrick_load_servlet]
run = lambda { manager.run_webrick }
elsif STDIN.respond_to?(:stat) && STDIN.stat.socket? &&
begin
require 'socket'
sock = Socket.for_fd(0)
sock.getpeername
false
rescue Errno::ENOTCONN
true
rescue SystemCallError
false
end
run = lambda { manager.run_fcgi }
elsif ENV.include?('REQUEST_METHOD')
run = lambda { manager.run_cgi }
else
require 'webapp/cli'
run = lambda { manager.run_cli }
end
if Thread.current[:webapp_delay]
Thread.current[:webapp_proc] = run
else
run.call
end
end