Closed eugeneius closed 9 months ago
Nice, I see something bigger is coming.
Can you please confirm that Rails 6.1 would autoload it the same way, @eugeneius ? The current version of rspec-rails supports Rails 6.1 and 7.x.
Yep, the autoload was there already in 6.1.0: https://github.com/rails/rails/blob/v6.1.0/actionpack/lib/action_dispatch.rb#L101
ActionDispatch::Assertions
has an autoload defined: https://github.com/rails/rails/blob/v7.1.3/actionpack/lib/action_dispatch.rb#L130That file requires
action_dispatch/testing/assertions/routing.rb
: https://github.com/rails/rails/blob/v7.1.3/actionpack/lib/action_dispatch/testing/assertions.rb#L5So
ActionDispatch::Assertions::RoutingAssertions
can be referenced without being explicitly required.rspec/rails/example/controller_example_group.rb
, which is loaded before this file, already references it and triggers the autoload, which means this require never has any effect: https://github.com/rspec/rspec-rails/blob/v6.1.1/lib/rspec/rails/example/controller_example_group.rb#L5Requiring
action_dispatch/testing/assertions/routing.rb
on its own doesn't actually work, because it autoloadsActionDispatch::Assertions
which then fails to findActionDispatch::Assertions::RoutingAssertions
since it hasn't been defined yet:(This is a prerequisite to a larger change, but I wanted to propose it first since it requires a fair bit of explanation.)