From: Sylvain Joyeux Date: 2006-04-27T15:39:28+09:00 Subject: Re: Extending Methods You can use Module and super class Channel def initialize super if defined? super end end module AChannelPlugin def initialize super if defined? super # Then write custom code. (To open a log file, for example.) end end channel = Channel.new channel.extend AChannelPlugin # per-object plugin loading Channel.include AChannelPlugin # global plugin loading Just make sure you don't forget to call super :p The main problem is that you can't remove a plugin on-the-fly (you would have to put a kind of per-module, per-instance enable/disable mechanism by hand) -- Sylvain Joyeux -- Sylvain Joyeux