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

Reply via email to