diff options
author | Yehuda Katz <wycats@gmail.com> | 2009-09-12 13:51:15 -0500 |
---|---|---|
committer | Yehuda Katz <wycats@gmail.com> | 2009-09-12 13:51:15 -0500 |
commit | 7152a4e9a654ccd0b9fefdcf34dc6aac655a727a (patch) | |
tree | 1771bdb314f81996173310bbd4da766b2a83f586 /actionpack/lib | |
parent | 3180619c0d228812c119e9704ac5956cbcad8614 (diff) | |
download | rails-7152a4e9a654ccd0b9fefdcf34dc6aac655a727a.tar.gz rails-7152a4e9a654ccd0b9fefdcf34dc6aac655a727a.tar.bz2 rails-7152a4e9a654ccd0b9fefdcf34dc6aac655a727a.zip |
Add per-controller middleware
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/action_controller/metal.rb | 15 |
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 |