solutions to the annoying "warning: already initialized constant" message
I encountered this same problem today and found a simple solution.
Since the warning is from trying to reassign a constant with its same value, I just changed
module LifeCycle RESET = 'reset'end
to
module LifeCycle RESET ||= 'reset'end
This took care of the warning and is a lot simpler than checking if each constant is defined. Let me know if you find a better solution.
This is only a problem in applications that explicitly reload, like Rails applications.
If the verbosity offends you, you can use unless
as a statement modifier instead:
module LifeCycle RESET = 'reset' unless const_defined?(:RESET)end
This leaves a few weak arguments against Avdi's suggestion to only use methods:
- constant lookup is faster than method lookup,
- constant values are defined on load, not on (first) request,
- constants visually suggest that they require no work to derive, and
If you like Avdi's suggestion enough to ignore these, go with it.