$ 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/-/kmJTP89AQOwJ. 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.
