I think this is caused by using ||= on variables in a class method. Hope that helps!
Thanks, Brad On Wed, Feb 17, 2010 at 12:03 AM, Guyren G Howe <[email protected]> wrote: > I've got some code I've been using for a while, which is a generic > controller so I don't need endless identical controller methods in my basic > controller classes. > > In my generic new, I do this: > > def new > @thing = my_model.new > end > > and my_model winds up in this: > > def self.model_from_controller_name(name) > (@model_name_cache ||= {})[name] ||= > table_name_from_controller_name(name).singularize.camelize.constantize > end > > and all of this works reasonably, except that the second time I use my > controller this way, the instance I get back fails to do all sorts of basic > stuff. For example, it fails to call the id method on ActiveRecord::Base — > instead, it gets stuck in a recursive loop in method_missing. > > This would appear to be something to do with some non-obvious class > reloading behavior, perhaps because I'm in development mode. If I take the > caching out, the problem disappears. > > Should I just give up on the caching here? I'd like to understand why > caching a reference to a model class should fail. > > (BTW, this relates to a previous post earlier this evening; I've now tied > it down more, so I thought I'd start a new topic). > > -- > SD Ruby mailing list > [email protected] > http://groups.google.com/group/sdruby -- SD Ruby mailing list [email protected] http://groups.google.com/group/sdruby
