On Saturday, 8 December 2012 at 11:00 AM, 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.
If they're constants, that belong to the class, then make them constants inside 
the class:

class MyModel < ActiveRecord::Model
  SOME_CONSTANT = 42
end

That will reload correctly. 

 
> 
> -- 
> 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/-/Rz8JI59_fV0J.
> To post to this group, send email to [email protected] 
> (mailto:[email protected]).
> To unsubscribe from this group, send email to 
> [email protected] 
> (mailto:[email protected]).
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-core?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
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