From: ThoML Date: 2008-02-24T17:44:54+09:00 Subject: Re: Monkeypatching is Destroying Ruby > I want this: > > module MyModule > class ::String > def inspect > return 'shock the monkey' > end > end > end > > I want .inspect, or whatever, outside my module, to behave normally. If ruby had a package/module system with import/export where constants could be renamed and assigned for a specific set of code ... well. Such a system would be tricky to manage though due to all classes being open. Nothing stops you from adding a new method later on and it could sometimes be difficult (or rather non-intuitive) to determine whether the class X in that method should be the real class X or class Y that was assigned to X in the import statement of such a module. Anyway, you could also rewrite (live/hot/monkey patch, whoahoo!) String#inspect to check if the caller belongs to your module. If I'm not mistaken, ruby19 provides means to detect who/what is calling a method. I'd rather subclass String though, since this special use should be restricted to a well-defined module. But what should happen in your proposal if a method returns such a special string and something outside the module calls inspect? BTW I don't think the python community originally frowned upon MP. I can remember a self-proclaimed python expert who once explained with sparkling eyes the merits of MP to a young newcomer. I cannot remember the slightest trace of doubt and this already happened a few years ago. Regards, Thomas.