aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/dispatch/dispatcher.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller/dispatch/dispatcher.rb')
-rw-r--r--actionpack/lib/action_controller/dispatch/dispatcher.rb22
1 files changed, 9 insertions, 13 deletions
diff --git a/actionpack/lib/action_controller/dispatch/dispatcher.rb b/actionpack/lib/action_controller/dispatch/dispatcher.rb
index 1a923724a1..8ed7de4788 100644
--- a/actionpack/lib/action_controller/dispatch/dispatcher.rb
+++ b/actionpack/lib/action_controller/dispatch/dispatcher.rb
@@ -66,16 +66,21 @@ module ActionController
define_callbacks :prepare_dispatch, :before_dispatch, :after_dispatch
def initialize
- @app = @@middleware.build(lambda { |env| self.dup._call(env) })
+ @app = @@middleware.build(lambda { |env| self._call(env) })
+ freeze
end
- def dispatch
+ def call(env)
+ @app.call(env)
+ end
+
+ def _call(env)
begin
run_callbacks :before_dispatch
- Routing::Routes.call(@env)
+ Routing::Routes.call(env)
rescue Exception => exception
if controller ||= (::ApplicationController rescue Base)
- controller.call_with_exception(@env, exception).to_a
+ controller.call_with_exception(env, exception).to_a
else
raise exception
end
@@ -84,15 +89,6 @@ module ActionController
end
end
- def call(env)
- @app.call(env)
- end
-
- def _call(env)
- @env = env
- dispatch
- end
-
def flush_logger
Base.logger.flush
end