Module: Innate::Adapter
- Includes:
- Optioned
- Defined in:
- lib/innate/adapter.rb
Overview
Lightweight wrapper around Rack::Handler, will apply our options in a unified manner and deal with adapters that don’t like to do what we want or where Rack doesn’t want to take a stand.
Rack handlers as of 2009.03.25: cgi, fastcgi, mongrel, emongrel, smongrel, webrick, lsws, scgi, thin
Class Method Summary collapse
-
.start(app, given_options = nil) ⇒ Object
Pass given app to the Handler, handler is chosen based on config.adapter option.
-
.start_ebb(app, config) ⇒ Object
Due to buggy autoload on Ruby 1.8 we have to require ‘ebb’ manually.
-
.start_thin(app, config) ⇒ Object
Thin shouldn’t give excessive output, especially not to $stdout.
-
.start_unicorn(app, config) ⇒ Object
A simple Unicorn wrapper.
-
.start_webrick(app, config) ⇒ Object
We want webrick to use our logger.
Methods included from Optioned
Class Method Details
.start(app, given_options = nil) ⇒ Object
Pass given app to the Handler, handler is chosen based on config.adapter option. If there is a method named start_name_of_adapter it will be run instead of the default run method of the handler, this makes it easy to define custom startup of handlers for your server of choice.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/innate/adapter.rb', line 30 def self.start(app, = nil) .merge!() if handler = [:handler].to_s.downcase config = { :Host => [:host], :Port => [:port] } Log.debug "Using #{handler}" if respond_to?(method = "start_#{handler}") send(method, app, config) else Rackup::Handler.get(handler).run(app, config) end end |
.start_ebb(app, config) ⇒ Object
Due to buggy autoload on Ruby 1.8 we have to require ‘ebb’ manually. This most likely happens because autoload doesn’t respect the require of rubygems and uses the C require directly.
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/innate/adapter.rb', line 48 def self.start_ebb(app, config) require 'ebb' # Rack doesn't ship with ebb handler, but it doesn't get picked up under some # circumstances, so we do that here. # Jruby Rack doesn't have the Handler::register method, so we have to check. # This has changed since Rack moved Handler to Rackup. Not sure about JRuby if Rackup::Handler.respond_to?(:register) Rackup::Handler.register('ebb', 'Rackup::Handler::Ebb') end Rackup::Handler.get('ebb').run(app, config) end |
.start_thin(app, config) ⇒ Object
Thin shouldn’t give excessive output, especially not to $stdout
73 74 75 76 77 |
# File 'lib/innate/adapter.rb', line 73 def self.start_thin(app, config) handler = Rackup::Handler.get('thin') ::Thin::Logging.silent = true handler.run(app, config) end |
.start_unicorn(app, config) ⇒ Object
A simple Unicorn wrapper.
80 81 82 83 84 85 86 |
# File 'lib/innate/adapter.rb', line 80 def self.start_unicorn(app, config) require 'unicorn' config = { :listeners => ["#{config[:Host]}:#{config[:Port]}"] } ::Unicorn.run(app, config) end |
.start_webrick(app, config) ⇒ Object
We want webrick to use our logger.
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/innate/adapter.rb', line 61 def self.start_webrick(app, config) handler = Rackup::Handler.get('webrick') config = { :Host => config[:Host], :Port => config[:Port], :Logger => Log, } handler.run(app, config) end |