У Суб, 08/11/2008 у 13:24 -0800, Geoff B піша: > As I understand it, if we do allow AR instances to persist between > requests, there'd only be an issue when you modify the class of an > instance that was cached -- in this case, you'd need to restart the > server. But I think that makes intuitive sense -- cached instances > would then be out-of-sync with the current class definition. If you always restart than there's no difference in keeping old versions or turning them to zombies.
Anyway, if we allow multiple class versions we should warn people. Many things will stop working, like for example equality testing of active record instances. Otherwise people will spend many hours trying to track down extremely weird and hard to find bugs, many of them, probably, unsuccessfully. Ideal solution would be to upgrade old classes and instances to new definition in a manner similar to CLOS. But I don't see a clean way to do that in ruby. The only candidate approach I see is via ObjectSpace#each_object (rewrite references to old instances & classes to point to upgraded instances), but it cannot inspect and rewrite closures, so will not work too. And of course ObjectSpace#each_object should be considered implementation-specific feature, because it cannot be efficiently implemented on all ruby implementations. -- Aliaksey Kandratsenka <[EMAIL PROTECTED]> --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
