diff options
Diffstat (limited to 'lib/rack/server.rb')
-rw-r--r-- | lib/rack/server.rb | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/lib/rack/server.rb b/lib/rack/server.rb index be7014c6..d2f0b954 100644 --- a/lib/rack/server.rb +++ b/lib/rack/server.rb @@ -1,7 +1,10 @@ require 'optparse' + module Rack + class Server + class Options def parse!(args) options = {} @@ -166,7 +169,7 @@ module Rack # * :Port # the port to bind to (used by supporting Rack::Handler) # * :AccessLog - # webrick acess log options (or supporting Rack::Handler) + # webrick access log options (or supporting Rack::Handler) # * :debug # turn on debug output ($DEBUG = true) # * :warn @@ -202,29 +205,44 @@ module Rack @app ||= options[:builder] ? build_app_from_string : build_app_and_options_from_config end - def self.logging_middleware - lambda { |server| - server.server.name =~ /CGI/ ? nil : [Rack::CommonLogger, $stderr] - } - end + class << self + def logging_middleware + lambda { |server| + server.server.name =~ /CGI/ ? nil : [Rack::CommonLogger, $stderr] + } + end - def self.middleware - @middleware ||= begin + def default_middleware_by_environment m = Hash.new {|h,k| h[k] = []} - m["deployment"].concat [ + m["deployment"] = [ [Rack::ContentLength], [Rack::Chunked], - logging_middleware + logging_middleware, + [Rack::TempfileReaper] ] - m["development"].concat m["deployment"] + [[Rack::ShowExceptions], [Rack::Lint]] + m["development"] = [ + [Rack::ContentLength], + [Rack::Chunked], + logging_middleware, + [Rack::ShowExceptions], + [Rack::Lint], + [Rack::TempfileReaper] + ] + m end + + # Aliased for backwards-compatibility + alias :middleware :default_middleware_by_environment end - def middleware - self.class.middleware + def default_middleware_by_environment + self.class.default_middleware_by_environment end + # Aliased for backwards-compatibility + alias :middleware :default_middleware_by_environment + def start &blk if options[:warn] $-w = true @@ -304,7 +322,8 @@ module Rack end def build_app(app) - middleware[options[:environment]].reverse_each do |middleware| + middlewares = default_middleware_by_environment[options[:environment]] + middlewares.reverse_each do |middleware| middleware = middleware.call(self) if middleware.respond_to?(:call) next unless middleware klass, *args = middleware @@ -364,4 +383,5 @@ module Rack end end + end |