(no subject)

Daniel B. 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