diff options
Diffstat (limited to 'railties')
-rw-r--r-- | railties/lib/rails/autoloaders.rb | 5 | ||||
-rw-r--r-- | railties/test/application/zeitwerk_integration_test.rb | 23 |
2 files changed, 28 insertions, 0 deletions
diff --git a/railties/lib/rails/autoloaders.rb b/railties/lib/rails/autoloaders.rb index b03499cf81..4b41e1faf9 100644 --- a/railties/lib/rails/autoloaders.rb +++ b/railties/lib/rails/autoloaders.rb @@ -24,6 +24,11 @@ module Rails end end + def logger=(logger) + callable_or_nil = logger.respond_to?(:debug) ? logger.method(:debug) : logger + each { |loader| loader.logger = callable_or_nil } + end + def zeitwerk_enabled? Rails.configuration.autoloader == :zeitwerk end diff --git a/railties/test/application/zeitwerk_integration_test.rb b/railties/test/application/zeitwerk_integration_test.rb index bbb97e983a..8a8ca18ebf 100644 --- a/railties/test/application/zeitwerk_integration_test.rb +++ b/railties/test/application/zeitwerk_integration_test.rb @@ -206,4 +206,27 @@ class ZeitwerkIntegrationTest < ActiveSupport::TestCase assert_equal Module, Module.method(:const_missing).owner assert_equal :no_op, deps.unhook! end + + test "autoloaders.logger=" do + boot + + logger = ->(_msg) { } + Rails.autoloaders.logger = logger + + Rails.autoloaders.each do |autoloader| + assert_equal logger, autoloader.logger + end + + Rails.autoloaders.logger = Rails.logger + + Rails.autoloaders.each do |autoloader| + assert_equal Rails.logger.method(:debug), autoloader.logger + end + + Rails.autoloaders.logger = nil + + Rails.autoloaders.each do |autoloader| + assert_nil autoloader.logger + end + end end |