From: Robert Klemme Date: 2011-04-28T23:09:15+09:00 Subject: Re: where's the best place to dynamically add singleton method? On Thu, Apr 28, 2011 at 3:58 PM, Iain Barnett wrote: > Hi, > > If I've got a simple bit of initialisation code > >    def initialize( blah ) >      @listener = Blah.new blah >    end > > and I'd like to add a singleton method to instance (because I don't want to monkey patch the Blah library) where's the best place to do that? I know I could do: > >    def initialize( blah ) >      @listener = Blah.new blah >      def @listener.my_mental_method >        self.give_it_up! "quickly" No self needed here. >      end >    end > > but is this a good place to do it, or is there something more eloquent/perfomant? I'd like all instances, wherever they are created, to have this method, so is there a better way altogether? First of all, I'd place the method in a module so you have less definitions around. Then I'd extend all instances with that module. That also makes for easy addition of more methods. module BlahExt def your_mental_method give_it_up! 'rather sooner than later' end end The automatic part could be handled by changing Bar's #new: class <