From: Tom Werner Date: 2006-07-20T08:08:12+09:00 Subject: Object#extend inner workings I've got a question regarding the inner workings of extend. Consider the following code that uses Object#extend twice: class Klass def hello(options = {}) p options end end module Mod1 def hello(options = {}) super(options.merge({:mod1 => true})) end end module Mod2 def hello(options = {}) super(options.merge({:mod2 => true})) end end k = Klass.new k.hello #=> {} k.extend(Mod1) k.hello #=> {:mod1=>true} k.extend(Mod2) k.hello #=> {:mod2=>true, :mod1=>true} I was a bit surprised that the second extend didn't clobber the first. How is this handled by the Ruby interpreter? Is it creating more than one eigenclass? Tom -- Tom Werner Helmets to Hardhats Software Developer tom@helmetstohardhats.org www.helmetstohardhats.org