aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/metal.rb
diff options
context:
space:
mode:
authorYehuda Katz <wycats@gmail.com>2009-09-12 13:51:15 -0500
committerYehuda Katz <wycats@gmail.com>2009-09-12 13:51:15 -0500
commit7152a4e9a654ccd0b9fefdcf34dc6aac655a727a (patch)
tree1771bdb314f81996173310bbd4da766b2a83f586 /actionpack/lib/action_controller/metal.rb
parent3180619c0d228812c119e9704ac5956cbcad8614 (diff)
downloadrails-7152a4e9a654ccd0b9fefdcf34dc6aac655a727a.tar.gz
rails-7152a4e9a654ccd0b9fefdcf34dc6aac655a727a.tar.bz2
rails-7152a4e9a654ccd0b9fefdcf34dc6aac655a727a.zip
Add per-controller middleware
Diffstat (limited to 'actionpack/lib/action_controller/metal.rb')
-rw-r--r--actionpack/lib/action_controller/metal.rb15
1 files changed, 14 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/metal.rb b/actionpack/lib/action_controller/metal.rb
index 51fbba3661..296d359391 100644
--- a/actionpack/lib/action_controller/metal.rb
+++ b/actionpack/lib/action_controller/metal.rb
@@ -88,6 +88,16 @@ module ActionController
end
end
+ extlib_inheritable_accessor(:middleware_stack) { ActionDispatch::MiddlewareStack.new }
+
+ def self.use(*args)
+ middleware_stack.use(*args)
+ end
+
+ def self.middleware
+ middleware_stack
+ end
+
# Return a rack endpoint for the given action. Memoize the endpoint, so
# multiple calls into MyController.action will return the same object
# for the same action.
@@ -99,7 +109,10 @@ module ActionController
# Proc:: A rack application
def self.action(name)
@actions ||= {}
- @actions[name.to_s] ||= ActionEndpoint.new(self, name)
+ @actions[name.to_s] ||= begin
+ endpoint = ActionEndpoint.new(self, name)
+ middleware_stack.build(endpoint)
+ end
end
end
end