I would like to discuss the merits/non-merits and the best approach to
implementation of "dynamic modules" --modules that take parameters at
the time of include, thus altering their behavior per include. The
common denominator here is the altered interface of #include:

  include AModule, :opt1 => :val1, :opt2 => :val2

Here's a simple example based on the implementation I (and friends) put
together

   module Mixin

     dynamic_feature do |options|

         define_method :hello do
           puts "Hello from #{options[:name]}"
         end

     end

   end

   class MyClass
     include Mixin, :name => 'Ruby'
   end

   m = MyClass.new
   m.hello -> 'Hello from Ruby'

   class MyClass2
     include Mixin, :name => 'Tom'
   end

   m = MyClass2.new
   m.hello -> 'Hello from Tom'

T.