class ActionDispatch::Journey::Router
def serve(req)
def serve(req) find_routes(req) do |match, parameters, route| set_params = req.path_parameters path_info = req.path_info script_name = req.script_name unless route.path.anchored req.script_name = (script_name.to_s + match.to_s).chomp("/") req.path_info = match.post_match req.path_info = "/" + req.path_info unless req.path_info.start_with? "/" end tmp_params = set_params.merge route.defaults parameters.each_pair { |key, val| tmp_params[key] = val.force_encoding(::Encoding::UTF_8) } req.path_parameters = tmp_params req.route_uri_pattern = route.path.spec.to_s _, headers, _ = response = route.app.serve(req) if "pass" == headers[Constants::X_CASCADE] req.script_name = script_name req.path_info = path_info req.path_parameters = set_params next end return response end [404, { Constants::X_CASCADE => "pass" }, ["Not Found"]] end