and though bugs are the bane of my existence, rest assured the wretched thing will get the best of care here

Rails initializers

By default, Rails loads Zeitwerk after the initializers in config/initializers are loaded. Autoloading before Zeitwerk is loaded is now deprecated but because we use a lot of autoloaded constants in our initializers, we had to move the loading of Zeitwerk earlier than these initializers.

A side-effect of this is that in the initializers, config.autoload_paths is already frozen.

To run an initializer before Zeitwerk is loaded, you need put them in config/initializers_before_autoloader. Ruby files in this folder are loaded in alphabetical order just like the default Rails initializers.

Some examples where you would need to do this are:

  1. Modifying Rails' config.autoload_paths
  2. Changing configuration that Zeitwerk uses, e.g. inflections