aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/middleware_stack.rb
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2008-12-16 12:05:27 +0000
committerPratik Naik <pratiknaik@gmail.com>2008-12-16 12:05:27 +0000
commitce0e2084107a20a773a587335cfe54bf70ade795 (patch)
treefded8e2f6a2d459bdd4676bb9646d3b54cc9f3fe /actionpack/lib/action_controller/middleware_stack.rb
parent016fffff6d6e434ee7fa69531b08b07d99f48583 (diff)
parent9e2b4a10f7f091868b3c3701efb4c04048455706 (diff)
downloadrails-ce0e2084107a20a773a587335cfe54bf70ade795.tar.gz
rails-ce0e2084107a20a773a587335cfe54bf70ade795.tar.bz2
rails-ce0e2084107a20a773a587335cfe54bf70ade795.zip
Merge commit 'mainstream/master'
Diffstat (limited to 'actionpack/lib/action_controller/middleware_stack.rb')
-rw-r--r--actionpack/lib/action_controller/middleware_stack.rb25
1 files changed, 20 insertions, 5 deletions
diff --git a/actionpack/lib/action_controller/middleware_stack.rb b/actionpack/lib/action_controller/middleware_stack.rb
index 1864bed23a..a6597a6fec 100644
--- a/actionpack/lib/action_controller/middleware_stack.rb
+++ b/actionpack/lib/action_controller/middleware_stack.rb
@@ -4,7 +4,12 @@ module ActionController
attr_reader :klass, :args, :block
def initialize(klass, *args, &block)
- @klass = klass.is_a?(Class) ? klass : klass.to_s.constantize
+ if klass.is_a?(Class)
+ @klass = klass
+ else
+ @klass = klass.to_s.constantize
+ end
+
@args = args
@block = block
end
@@ -21,18 +26,28 @@ module ActionController
end
def inspect
- str = @klass.to_s
- @args.each { |arg| str += ", #{arg.inspect}" }
+ str = klass.to_s
+ args.each { |arg| str += ", #{arg.inspect}" }
str
end
def build(app)
- klass.new(app, *args, &block)
+ if block
+ klass.new(app, *args, &block)
+ else
+ klass.new(app, *args)
+ end
end
end
+ def initialize(*args, &block)
+ super(*args)
+ block.call(self) if block_given?
+ end
+
def use(*args, &block)
- push(Middleware.new(*args, &block))
+ middleware = Middleware.new(*args, &block)
+ push(middleware)
end
def build(app)