From: John Johnson Date: 2006-07-18T04:07:07+09:00 Subject: [Fwd: Re: Preferred monkeypatching technique] > Daniel Berger wrote: > Well, the idea is that the 3rd party software is going to be using > whatever classes it has always used, so just creating a subclass doesn't > get me anywhere because the 3rd party app (i.e. Rails) doesn't give a > hoot about my BigNozzleFiretruck. You could use a factory for that, and allow the plugin to override the factory's creater method. #!/usr/bin/env ruby class FireTruck def say puts "truck" end end class FireTruckFactory def FireTruckFactory.create return FireTruck.new end end # First plugin class Pumper < FireTruck def say puts "Pumper here." end end class FireTruckFactory def FireTruckFactory.create return Pumper.new end end # Second plugin class HookAndLadder < FireTruck def say puts "Hook and ladder here." end end class FireTruckFactory def FireTruckFactory.create return HookAndLadder.new end end #try it ft = FireTruckFactory.create ft.say # => Hook and ladder here. Regards, JJ