This probably sounds crazy but has it even been considered to either have a way to register constants for an autoloaded class so they will be undefined before reload, or maybe even just a class method to do:
def def_const(constant, value)
remove_const(constant) if const_defined?(constant)
constant = value
Some say to put constants where they aren’t autoloaded (like in initializers) and other even suggest using methods, but that defeats the purpose of using constants. So does the method above, but it is more in line with what Rails autoloading promises.
Seems like avoiding the problem makes some consider just using magic numbers in code which is like stepping back into time.