This is one of the things that got me concerned: http://devblog.avdi.org/2011/08/18/do-we-need-constants/
It's neat, but seems wrong (no offense to those using that technique). On Friday, December 7, 2012 5:13:51 PM UTC-5, Gary Weaver wrote: > > $ irb > 1.9.3p194 :001 > class Class > 1.9.3p194 :002?> def def_const(constant, value) > 1.9.3p194 :003?> remove_const(constant) if > const_defined?(constant) > 1.9.3p194 :004?> const_set(constant, value) > 1.9.3p194 :005?> end > 1.9.3p194 :006?> end > => nil > 1.9.3p194 :007 > class Something > 1.9.3p194 :008?> def_const(:HI, 1) > 1.9.3p194 :009?> end > => 1 > 1.9.3p194 :010 > class Something > 1.9.3p194 :011?> def_const(:HI, 1) > 1.9.3p194 :012?> end > => 1 > 1.9.3p194 :013 > Something::HI > => 1 > > Like that. > > On Friday, December 7, 2012 5:00:40 PM UTC-5, Gary Weaver wrote: >> >> 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_const(:SOME_CONSTANT, value) >> >> that would: >> >> def def_const(constant, value) >> remove_const(constant) if const_defined?(constant) >> constant = value >> end >> >> 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. >> > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-core/-/mUQyjtT25aoJ. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
