aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2015-08-07 14:26:21 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2015-08-07 15:37:31 -0700
commit83b767cef90abfc4c2ee9f4b451b0215501fae9a (patch)
tree1655677c718b8f33665c106dd631c42f798d2926 /actionpack/lib
parent435b224e7ec42194d974a90b89a4562ee876aafc (diff)
downloadrails-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.rb3
-rw-r--r--actionpack/lib/action_dispatch/middleware/stack.rb43
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