aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2015-08-07 12:03:13 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2015-08-07 15:37:31 -0700
commit27eddbb332c4adb533e0699e4b1532c3bd4de222 (patch)
treefc7697591d8d14a3d32f35694f5d96245d3c17ba /actionpack/lib/action_dispatch
parente4f9a0b92531fa68cc2cdbd52b66904515fcd486 (diff)
downloadrails-27eddbb332c4adb533e0699e4b1532c3bd4de222.tar.gz
rails-27eddbb332c4adb533e0699e4b1532c3bd4de222.tar.bz2
rails-27eddbb332c4adb533e0699e4b1532c3bd4de222.zip
simplify the Middleware constructor
We should do the hard work outside the constructor. Also fix the tests to not directly construct middleware objects, but to go through the stack object.
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r--actionpack/lib/action_dispatch/middleware/stack.rb23
1 files changed, 13 insertions, 10 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/stack.rb b/actionpack/lib/action_dispatch/middleware/stack.rb
index 87e627319e..b39a502d77 100644
--- a/actionpack/lib/action_dispatch/middleware/stack.rb
+++ b/actionpack/lib/action_dispatch/middleware/stack.rb
@@ -6,7 +6,7 @@ module ActionDispatch
class Middleware
attr_reader :args, :block, :name, :classcache
- def initialize(klass_or_name, *args, &block)
+ def initialize(klass_or_name, args, block)
@klass = nil
if klass_or_name.respond_to?(:name)
@@ -75,19 +75,17 @@ module ActionDispatch
middlewares[i]
end
- def unshift(*args, &block)
- middleware = self.class::Middleware.new(*args, &block)
- middlewares.unshift(middleware)
+ def unshift(klass, *args, &block)
+ middlewares.unshift(build_middleware(klass, args, block))
end
def initialize_copy(other)
self.middlewares = other.middlewares.dup
end
- def insert(index, *args, &block)
+ def insert(index, klass, *args, &block)
index = assert_index(index, :before)
- middleware = self.class::Middleware.new(*args, &block)
- middlewares.insert(index, middleware)
+ middlewares.insert(index, build_middleware(klass, args, block))
end
alias_method :insert_before, :insert
@@ -107,9 +105,8 @@ module ActionDispatch
middlewares.delete target
end
- def use(*args, &block)
- middleware = self.class::Middleware.new(*args, &block)
- middlewares.push(middleware)
+ def use(klass, *args, &block)
+ middlewares.push(build_middleware(klass, args, block))
end
def build(app = Proc.new)
@@ -123,5 +120,11 @@ module ActionDispatch
raise "No such middleware to insert #{where}: #{index.inspect}" unless i
i
end
+
+ private
+
+ def build_middleware(klass, args, block)
+ Middleware.new(klass, args, block)
+ end
end
end