From: Synth Date: 2009-03-17T12:27:35+09:00 Subject: Re: Dynamically extending modules once they have been included I get it now...the ancestors list of the module is copied over to the including class at "include-time". If the module's ancestry is changed, this will not be reflected. This seems to me to inhibit some "meta-programmability"(if that's a word) as you can't mixin modules to already included modules and have the effect take place with whomever has already included the module. In other words, its not consistent with the ability to dynamically change(add/change/ delete) methods of the module directly at runtime. Has no one else encountered/wrestled with this quirk? Seems to me a great way to organize code - a mixin for a mixin. > >> class X; include M; end > => X > >> X.ancestors > => [X, M, Object, Kernel] On Mar 16, 8:21 pm, Ryan Davis wrote: > On Mar 16, 2009, at 17:12 , p...@p373.net wrote: > > > So why doesn't including a module into another module affect classes > > that have already included that first module? > > because including a module affects the ancestors, not the class/ > object's method dictionary: