Merged updates from trunk into stable branch
[feedcatcher.git] / vendor / rails / actionpack / lib / action_controller / vendor / rack-1.0 / rack / handler.rb
1 module Rack
2 # *Handlers* connect web servers with Rack.
3 #
4 # Rack includes Handlers for Mongrel, WEBrick, FastCGI, CGI, SCGI
5 # and LiteSpeed.
6 #
7 # Handlers usually are activated by calling <tt>MyHandler.run(myapp)</tt>.
8 # A second optional hash can be passed to include server-specific
9 # configuration.
10 module Handler
11 def self.get(server)
12 return unless server
13
14 if klass = @handlers[server]
15 obj = Object
16 klass.split("::").each { |x| obj = obj.const_get(x) }
17 obj
18 else
19 Rack::Handler.const_get(server.capitalize)
20 end
21 end
22
23 def self.register(server, klass)
24 @handlers ||= {}
25 @handlers[server] = klass
26 end
27
28 autoload :CGI, "rack/handler/cgi"
29 autoload :FastCGI, "rack/handler/fastcgi"
30 autoload :Mongrel, "rack/handler/mongrel"
31 autoload :EventedMongrel, "rack/handler/evented_mongrel"
32 autoload :SwiftipliedMongrel, "rack/handler/swiftiplied_mongrel"
33 autoload :WEBrick, "rack/handler/webrick"
34 autoload :LSWS, "rack/handler/lsws"
35 autoload :SCGI, "rack/handler/scgi"
36 autoload :Thin, "rack/handler/thin"
37
38 register 'cgi', 'Rack::Handler::CGI'
39 register 'fastcgi', 'Rack::Handler::FastCGI'
40 register 'mongrel', 'Rack::Handler::Mongrel'
41 register 'emongrel', 'Rack::Handler::EventedMongrel'
42 register 'smongrel', 'Rack::Handler::SwiftipliedMongrel'
43 register 'webrick', 'Rack::Handler::WEBrick'
44 register 'lsws', 'Rack::Handler::LSWS'
45 register 'scgi', 'Rack::Handler::SCGI'
46 register 'thin', 'Rack::Handler::Thin'
47 end
48 end