Sha256: 7f1c2f03791e2d3f9a9dd524addbce2179fe5442b3eff87a513355d1977e915f

Contents?: true

Size: 1.66 KB

Versions: 61

Compression:

Stored size: 1.66 KB

Contents

require 'fcgi'

require 'spiderfw/controller/controller_io'
require 'spiderfw/controller/http_controller'
require 'spiderfw/http/adapters/cgi_io'

def prepare_env(env)
    return env
end

module Spider; module HTTP
    class FCGIServer < Server
        @supports = {
            :chunked_request => true
        }
    end
end; end

exit_graceful = false
set_grace = lambda do 
    STDERR << "RECEIVED SIGNAL\n";
    exit_graceful = true; 
    # result = RubyProf.stop
    # printer = RubyProf::FlatPrinter.new(result)
    # printer.print(STDERR, 0)
    exit
end
trap('SIGTERM', &set_grace) 
trap('SIGINT', &set_grace) 
trap('SIGQUIT', &set_grace) 
trap('SIGABRT', &set_grace) 

# require 'ruby-prof'
# RubyProf.start

FCGI.each_request do |req|
    env = prepare_env(req.env)
    body = req.in
    controller_request = Spider::Request.new(env)
    controller_request.server = Spider::HTTP::FCGIServer
    controller_request.body = body
    path = env['REQUEST_URI']+''
    controller_request.action = path
    controller_response = Spider::Response.new
    controller_response.server_output = CGIIO.new(req.out, controller_response)
#    controllerThread = Thread.start do
        begin
            controller = ::Spider::HTTPController.new(controller_request, controller_response)
            controller.before(path)
            controller.execute(path)
            controller.after(path)                
        rescue => exc
            Spider.logger.error(exc)
            controller.ensure()
        ensure
            controller_response.server_output.send_headers unless controller_response.server_output.headers_sent
            req.finish
        end
#    end
    break if exit_graceful
end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
spiderfw-1.0.1 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-1.0.0 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.39 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.38 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.37 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.35 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.34 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.33 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.32 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.31 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.30 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.29 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.28 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.27 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.26 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.26.pre1 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.25 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.24 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.23 lib/spiderfw/http/adapters/fcgi.rb
spiderfw-0.6.22 lib/spiderfw/http/adapters/fcgi.rb