aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
diff options
context:
space:
mode:
authorCarlhuda <carlhuda@engineyard.com>2010-03-08 16:49:47 -0800
committerCarlhuda <carlhuda@engineyard.com>2010-03-08 16:50:00 -0800
commit056042eb829e0507ed605264d43a79ce88112288 (patch)
treec4ff22c2fa76e5b1bc013948aff4f068cdd4e172 /actionpack/lib/action_dispatch
parent146a5305d56b636d2fd2c2a09a58f5f3edc2d9c0 (diff)
downloadrails-056042eb829e0507ed605264d43a79ce88112288.tar.gz
rails-056042eb829e0507ed605264d43a79ce88112288.tar.bz2
rails-056042eb829e0507ed605264d43a79ce88112288.zip
Simplify the action endpoint:
* Remove ActionEndpoint in favor of passing a block to MiddlewareStack * Always create a Request; the performance win of RackDelegation is around the response; the Request object hit is limited to a single object allocation * #dispatch takes a Request
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r--actionpack/lib/action_dispatch/middleware/stack.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/stack.rb b/actionpack/lib/action_dispatch/middleware/stack.rb
index c52c8c0e6a..5c5362ce4a 100644
--- a/actionpack/lib/action_dispatch/middleware/stack.rb
+++ b/actionpack/lib/action_dispatch/middleware/stack.rb
@@ -122,7 +122,11 @@ module ActionDispatch
find_all { |middleware| middleware.active? }
end
- def build(app)
+ def build(app = nil, &blk)
+ app ||= blk
+
+ raise "MiddlewareStack#build requires an app" unless app
+
active.reverse.inject(app) { |a, e| e.build(a) }
end
end