On Thu, Apr 28, 2011 at 3:58 PM, Iain Barnett <iainspeed / gmail.com> wrote: > Hi, > > If I've got a simple bit of initialisation code > > ¨Βεζ ιξιτιαμιϊεβμαθ > ¨Βμιστεξες Βμαθ®ξεχ βμαθ > ¨Βξδ > > 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 knowould do: > > ¨Βεζ ιξιτιαμιϊεβμαθ > ¨Βμιστεξες Βμαθ®ξεχ βμαθ > ¨Βεζ ΐμιστεξες®νωίνεξταμίνετθοδ > ¨Βεμζ®ηιφείιτίυπΆρυιγλμω No self needed here. > ¨Βξδ > ¨Βξδ > > 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 <<Blah alias _new new def new(*a,&b) _new(*a,&b).extend BlahExt end end Note that this does not deal with inheritance nicely. For that you could do something similar with Bar's #initialize instead of #new. If you do not need a global automatic I'd simply stick with def initialize( blah ) @listener = Blah.new(blah).extend BlahExt end Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/