From: bhbrinckerhoff@... (Ben) Date: 2004-11-07T17:13:38+09:00 Subject: calling binding() within a module method (for mixin)????? I've been trying to write a method that can dynamically mixin a module to a class. I tried the following code: #========================================= module MixinUtils def MixinUtils.includeMixin(className,mixinName,vars) evalStr= <<-END class #{className.to_s} include #{mixinName.to_s} end END eval(evalStr, vars) end end module Foo def printFoo puts "foo" end end class Array def someMethod self.each do |item| MixinUtils.includeMixin(item.class.to_s,"Foo",binding) item.printFoo end end end [1,2,3].someMethod #====================================== But running this gives question.rb:22:in `something': undefined method `printFoo' for 1:Fixnum (NoMethodError) from question.rb:20:in `each' from question.rb:20:in `something' from question.rb:31 But if I take out the '[1,nil,true].something' and append a=1 MixinUtils.includeMixin("Fixnum","Foo",binding) a.printFoo it produces foo as expected. Why the difference? Why does calling 'binding' inside a block produce different results? Thanks in advance... Ben