diff options
author | Max Cantor <max@maxcantor.net> | 2014-06-27 15:44:16 -0400 |
---|---|---|
committer | James Tucker <jftucker@gmail.com> | 2014-07-13 16:17:41 -0700 |
commit | 52a80a79e27d171af3ab7e604f9bc211bc9e3e80 (patch) | |
tree | 897393d174eea63764427e8165ab576b6035323e | |
parent | 7d20fa6c1ea894937d2326bfec0549cf53c95f21 (diff) | |
download | rack-52a80a79e27d171af3ab7e604f9bc211bc9e3e80.tar.gz |
Give @middleware a more semantic name.
Had to put the class method definitions in an eigenclass wrapper to use the 'alias' keyword sanely. It wouldn't be necessary if old behavior of the middleware was unsupported, but that would be too invasive for just a small clarity change.
-rw-r--r-- | lib/rack/server.rb | 45 | ||||
-rw-r--r-- | test/spec_server.rb | 10 |
2 files changed, 32 insertions, 23 deletions
diff --git a/lib/rack/server.rb b/lib/rack/server.rb index 4e268b04..711071ca 100644 --- a/lib/rack/server.rb +++ b/lib/rack/server.rb @@ -205,29 +205,37 @@ 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 - m = Hash.new {|h,k| h[k] = []} - m["deployment"].concat [ - [Rack::ContentLength], - [Rack::Chunked], - logging_middleware - ] - m["development"].concat m["deployment"] + [[Rack::ShowExceptions], [Rack::Lint]] - m + def default_middleware_by_environment + @default_middleware_by_environment ||= begin + m = Hash.new {|h,k| h[k] = []} + m["deployment"].concat [ + [Rack::ContentLength], + [Rack::Chunked], + logging_middleware + ] + m["development"].concat m["deployment"] + [[Rack::ShowExceptions], [Rack::Lint]] + m + end 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 @@ -307,7 +315,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 diff --git a/test/spec_server.rb b/test/spec_server.rb index 44d4bcbb..59391681 100644 --- a/test/spec_server.rb +++ b/test/spec_server.rb @@ -30,14 +30,14 @@ describe Rack::Server do should "not include Rack::Lint in deployment or none environments" do server = Rack::Server.new(:app => 'foo') - server.middleware['deployment'].flatten.should.not.include(Rack::Lint) - server.middleware['none'].flatten.should.not.include(Rack::Lint) + server.default_middleware_by_environment['deployment'].flatten.should.not.include(Rack::Lint) + server.default_middleware_by_environment['none'].flatten.should.not.include(Rack::Lint) end should "not include Rack::ShowExceptions in deployment or none environments" do server = Rack::Server.new(:app => 'foo') - server.middleware['deployment'].flatten.should.not.include(Rack::ShowExceptions) - server.middleware['none'].flatten.should.not.include(Rack::ShowExceptions) + server.default_middleware_by_environment['deployment'].flatten.should.not.include(Rack::ShowExceptions) + server.default_middleware_by_environment['none'].flatten.should.not.include(Rack::ShowExceptions) end should "support CGI" do @@ -53,7 +53,7 @@ describe Rack::Server do should "not force any middleware under the none configuration" do server = Rack::Server.new(:app => 'foo') - server.middleware['none'].should.be.empty + server.default_middleware_by_environment['none'].should.be.empty end should "use a full path to the pidfile" do |