From a6a79f83b8b9be8c76065d3f333744c4272e0c49 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Fri, 21 Jul 2023 12:24:52 -0400 Subject: [PATCH] Add ENV variable to debug zeitwerk with logging and eager loading It's far easier to debug in dev/test/containers using an ENV variable so we'll make it so zeitwerk stdout logging and eager loading of all engines is only done with this flag enabled. --- config/application.rb | 9 +++++++++ config/initializers/zeitwerk.rb | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/config/application.rb b/config/application.rb index 41909fd943dc..e1fcc3928bcc 100644 --- a/config/application.rb +++ b/config/application.rb @@ -164,6 +164,15 @@ class Application < Rails::Application Vmdb::Loggers.apply_config(::Settings.log) end + initializer :eager_load_all_the_things, :after => :load_config_initializers do + if ENV['DEBUG_MANAGEIQ_ZEITWERK'].present? + config.eager_load_paths += config.autoload_paths + Vmdb::Plugins.each do |plugin| + plugin.config.eager_load_paths += plugin.config.autoload_paths + end + end + end + config.after_initialize do Vmdb::Initializer.init ActiveRecord::Base.connection_pool.release_connection diff --git a/config/initializers/zeitwerk.rb b/config/initializers/zeitwerk.rb index 16f9b068120d..1e46e9d8e41a 100644 --- a/config/initializers/zeitwerk.rb +++ b/config/initializers/zeitwerk.rb @@ -1,4 +1,9 @@ if Rails.application.config.autoloader == :zeitwerk && Rails.autoloaders.main + if ENV['DEBUG_MANAGEIQ_ZEITWERK'].present? + Zeitwerk::Loader.default_logger = method(:puts) + Rails.autoloaders.main.logger = Logger.new($stdout) + end + # These specific directories are for code organization, not namespacing: # TODO: these should be either renamed with good names, the intermediate directory removed # and/or both.