----------------------------------------------------------------

 module QAPrototype
   def method_missing(method_name)
     puts "#{method_name} is undefined"
     puts "Please define what I should do (end with a newline):"

     (code ||= "") << (line = gets) until line and line.chomp.empty?

     self.class.module_eval do
       define_method(method_name){eval code}
     end

     at_exit do
       puts ""
       puts "class #{self.class}"
       puts "  def #{method_name}"
       code.gsub(/[\r\n]+$/, "").split(/\r*\n/).each{|s| puts " "*4+s}
       puts "  end"
       puts "end"
     end
   end
 end

----------------------------------------------------------------

 class Foo
   include QAPrototype
 end

 3.times do
   foo = Foo.new

   foo.bar
   foo.baz
 end

----------------------------------------------------------------

 $ ruby test.rb
 bar is undefined
 Please define what I should do (end with a newline):
 @x = 7
 @y = 8
 @z = self.object_id

 baz is undefined
 Please define what I should do (end with a newline):
 p inspect

 "#<Foo:0xb7d7ebfc @x=7, @z=-605293058, @y=8> "
 "#<Foo:0xb7d7e954 @x=7, @z=-605293398, @y=8> "

 class Foo
   def baz
     p inspect
   end
 end

 class Foo
   def bar
     @x = 7
     @y = 8
     @z = self.object_id
   end
 end

----------------------------------------------------------------

gegroet,
Erik V. - http://www.erikveen.dds.nl/