Skip to content

Commit 865a3a2

Browse files
authored
Merge pull request rails#53326 from jhawthorn/lazy_routes_recognize_request_fix
Reload lazy routes on recognize_path_with_request
2 parents e009430 + c52fa75 commit 865a3a2

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

railties/lib/rails/engine/lazy_route_set.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ def recognize_path(path, environment = {})
7878
super
7979
end
8080

81+
def recognize_path_with_request(...)
82+
Rails.application&.reload_routes_unless_loaded
83+
super
84+
end
85+
8186
def routes
8287
Rails.application&.reload_routes_unless_loaded
8388
super

railties/test/engine/lazy_route_set_test.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# frozen_string_literal: true
22

33
require "isolation/abstract_unit"
4+
require "rack/test"
45

56
module Rails
67
class Engine
@@ -109,6 +110,18 @@ class MyRailtie < ::Rails::Railtie
109110
)
110111
end
111112

113+
test "reloads routes when recognize_path_with_request is called" do
114+
require "#{app_path}/config/environment"
115+
116+
path = "/users"
117+
req = ActionDispatch::Request.new(::Rack::MockRequest.env_for(path))
118+
119+
assert_equal(
120+
{ controller: "rails/engine/lazy_route_set_test/users", action: "index" },
121+
Rails.application.routes.recognize_path_with_request(req, path, {})
122+
)
123+
end
124+
112125
private
113126
def build_app
114127
super

0 commit comments

Comments
 (0)