aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2019-02-21 01:26:36 -0800
committerXavier Noria <fxn@hashref.com>2019-02-21 01:57:21 -0800
commit39aaa0264aa1772cd1b3769a3c649d1d9bb11918 (patch)
tree8bb95ee78776d4117dc92201b2a92ee56656365b /railties
parentb57ca840a6fe64b7a76bc6585dff26e5c08879fb (diff)
downloadrails-39aaa0264aa1772cd1b3769a3c649d1d9bb11918.tar.gz
rails-39aaa0264aa1772cd1b3769a3c649d1d9bb11918.tar.bz2
rails-39aaa0264aa1772cd1b3769a3c649d1d9bb11918.zip
Define Rails.autoloaders.logger=
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/autoloaders.rb5
-rw-r--r--railties/test/application/zeitwerk_integration_test.rb23
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