def _dispatch(action=:to_s)
setup_session
self.action_name = action
caught = catch(:halt) do
start = Time.now
result = _call_filters(_before_filters)
@_benchmarks[:before_filters_time] = Time.now - start if _before_filters
result
end
@body = case caught
when :filter_chain_completed then _call_action(action_name)
when String then caught
when nil then _filters_halted
when Symbol then __send__(caught)
when Proc then caught.call(self)
else
raise MerbControllerError, "The before filter chain is broken dude. wtf?"
end
start = Time.now
_call_filters(_after_filters)
@_benchmarks[:after_filters_time] = Time.now - start if _after_filters
finalize_session
@body
end