diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-07 14:26:21 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-07 15:37:31 -0700 |
commit | 83b767cef90abfc4c2ee9f4b451b0215501fae9a (patch) | |
tree | 1655677c718b8f33665c106dd631c42f798d2926 /actionpack/lib | |
parent | 435b224e7ec42194d974a90b89a4562ee876aafc (diff) | |
download | rails-83b767cef90abfc4c2ee9f4b451b0215501fae9a.tar.gz rails-83b767cef90abfc4c2ee9f4b451b0215501fae9a.tar.bz2 rails-83b767cef90abfc4c2ee9f4b451b0215501fae9a.zip |
Using strings or symbols for middleware class names is deprecated.
Convert things like this:
middleware.use "Foo::Bar"
to this:
middleware.use Foo::Bar
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/action_controller/metal.rb | 3 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/middleware/stack.rb | 43 |
2 files changed, 26 insertions, 20 deletions
diff --git a/actionpack/lib/action_controller/metal.rb b/actionpack/lib/action_controller/metal.rb index 4dfd351b95..dab67452ee 100644 --- a/actionpack/lib/action_controller/metal.rb +++ b/actionpack/lib/action_controller/metal.rb @@ -53,8 +53,7 @@ module ActionController list = except end - - Middleware.new(klass, args, list, strategy, block) + Middleware.new(get_class(klass), args, list, strategy, block) end end diff --git a/actionpack/lib/action_dispatch/middleware/stack.rb b/actionpack/lib/action_dispatch/middleware/stack.rb index b39a502d77..62e87a6f29 100644 --- a/actionpack/lib/action_dispatch/middleware/stack.rb +++ b/actionpack/lib/action_dispatch/middleware/stack.rb @@ -4,25 +4,15 @@ require "active_support/dependencies" module ActionDispatch class MiddlewareStack class Middleware - attr_reader :args, :block, :name, :classcache + attr_reader :args, :block, :klass - def initialize(klass_or_name, args, block) - @klass = nil - - if klass_or_name.respond_to?(:name) - @klass = klass_or_name - @name = @klass.name - else - @name = klass_or_name.to_s - end - - @classcache = ActiveSupport::Dependencies::Reference - @args, @block = args, block + def initialize(klass, args, block) + @klass = klass + @args = args + @block = block end - def klass - @klass || classcache[@name] - end + def name; klass.name; end def ==(middleware) case middleware @@ -31,7 +21,7 @@ module ActionDispatch when Class klass == middleware else - normalize(@name) == normalize(middleware) + normalize(name) == normalize(middleware) end end @@ -123,8 +113,25 @@ module ActionDispatch private + def get_class(klass) + if klass.is_a?(String) || klass.is_a?(Symbol) + classcache = ActiveSupport::Dependencies::Reference + converted_klass = classcache[klass.to_s] + ActiveSupport::Deprecation.warn <<-eowarn +Passing strings or symbols to the middleware builder is deprecated, please change +them to actual class references. For example: + + "#{klass}" => #{converted_klass} + + eowarn + converted_klass + else + klass + end + end + def build_middleware(klass, args, block) - Middleware.new(klass, args, block) + Middleware.new(get_class(klass), args, block) end end end |