I have this object which has "include" declared. I want to, in certain situations, not have the include happen. I can turn it off with an "if" or an "unless", but is there any way to actually just yank the include out, and with it any changes it made to the thing which included it? (I'm almost certain the answer's no but it'd be pretty cool if I was wrong.)
on 2007-02-21 00:16
on 2007-02-22 07:48
Giles Bowkett schrieb: > I have this object which has "include" declared. I want to, in certain > situations, not have the include happen. I can turn it off with an > "if" or an "unless", but is there any way to actually just yank the > include out, and with it any changes it made to the thing which > included it? Giles, it depends on what you're willing to pay :-) If you can change the code doing the "include", there are libraries like import-module (see the RAA) which let you do what you want. If you can't or don't want to change the code with the "include", I see no other way than to directly access the internal structures of the Ruby objects. This can be done using a little C extension, or with plain Ruby code using techniques from the evil library (see RubyForge). If you want to go one of these routes and need more info, please ask again. Regards, Pit
on 2007-02-22 09:37
Wow, that does sound evil. I'm actually thinking the whole thing can be side-stepped. The module uses included to add methods to an object; it may be cleaner just to write something which adds methods to instances of the object as needed instead.