33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'actionpack/lib/action_dispatch/journey/router.rb', line 33
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
_, , _ = response = route.app.serve(req)
if "pass" == [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
|