method
call
v4.1.8 -
Show latest stable
- Class:
ActionDispatch::Journey::Router
call(env)public
No documentation available.
# File actionpack/lib/action_dispatch/journey/router.rb, line 56
def call(env)
env['PATH_INFO'] = Utils.normalize_path(env['PATH_INFO'])
find_routes(env).each do |match, parameters, route|
script_name, path_info, set_params = env.values_at('SCRIPT_NAME',
'PATH_INFO',
@params_key)
unless route.path.anchored
env['SCRIPT_NAME'] = (script_name.to_s + match.to_s).chomp('/')
matched_path = match.post_match
env['PATH_INFO'] = matched_path
env['PATH_INFO'] = "/" + matched_path unless matched_path.start_with? "/"
end
env[@params_key] = (set_params || {}).merge parameters
status, headers, body = route.app.call(env)
if 'pass' == headers['X-Cascade']
env['SCRIPT_NAME'] = script_name
env['PATH_INFO'] = path_info
env[@params_key] = set_params
next
end
return [status, headers, body]
end
return [404, {'X-Cascade' => 'pass'}, ['Not Found']]
end