diff options
author | yui-knk <spiketeika@gmail.com> | 2015-11-28 16:32:24 +0900 |
---|---|---|
committer | yui-knk <spiketeika@gmail.com> | 2016-04-23 11:40:50 +0900 |
commit | b50e88ebdf375cf81ad63586ce4599979262f975 (patch) | |
tree | b22902d744f08a8cd2d30e3a0a22672337027312 /actionpack/lib/action_dispatch | |
parent | 4c76ce640449cc2568e31b5ed533caec8af5e39f (diff) | |
download | rails-b50e88ebdf375cf81ad63586ce4599979262f975.tar.gz rails-b50e88ebdf375cf81ad63586ce4599979262f975.tar.bz2 rails-b50e88ebdf375cf81ad63586ce4599979262f975.zip |
Make `assert_recognizes` to traverse mounted engines
Before this commit paths of mounted engines are not traversed
when `assert_recognizes` is called, causing strange test results.
This commit enable to traverse mounted paths.
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/endpoint.rb | 10 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/routing/inspector.rb | 4 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/routing/route_set.rb | 7 |
3 files changed, 15 insertions, 6 deletions
diff --git a/actionpack/lib/action_dispatch/routing/endpoint.rb b/actionpack/lib/action_dispatch/routing/endpoint.rb index 88aa13c3e8..819305615e 100644 --- a/actionpack/lib/action_dispatch/routing/endpoint.rb +++ b/actionpack/lib/action_dispatch/routing/endpoint.rb @@ -1,10 +1,12 @@ module ActionDispatch module Routing class Endpoint # :nodoc: - def dispatcher?; false; end - def redirect?; false; end - def matches?(req); true; end - def app; self; end + def dispatcher?; false; end + def redirect?; false; end + def engine?; rack_app.respond_to?(:routes); end + def matches?(req); true; end + def app; self; end + def rack_app; app; end end end end diff --git a/actionpack/lib/action_dispatch/routing/inspector.rb b/actionpack/lib/action_dispatch/routing/inspector.rb index 5d30a545a2..4e859fbac3 100644 --- a/actionpack/lib/action_dispatch/routing/inspector.rb +++ b/actionpack/lib/action_dispatch/routing/inspector.rb @@ -13,7 +13,7 @@ module ActionDispatch end def rack_app - app.app + app.rack_app end def path @@ -45,7 +45,7 @@ module ActionDispatch end def engine? - rack_app.respond_to?(:routes) + app.engine? end end diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb index 16237bd564..d8df247068 100644 --- a/actionpack/lib/action_dispatch/routing/route_set.rb +++ b/actionpack/lib/action_dispatch/routing/route_set.rb @@ -751,6 +751,10 @@ module ActionDispatch end req = make_request(env) + recognize_path_with_request(req, path, extras) + end + + def recognize_path_with_request(req, path, extras) @router.recognize(req) do |route, params| params.merge!(extras) params.each do |key, value| @@ -770,6 +774,9 @@ module ActionDispatch end return req.path_parameters + elsif app.matches?(req) && app.engine? + path_parameters = app.rack_app.routes.recognize_path_with_request(req, path, extras) + return path_parameters end end |