dblack / wobblini.net wrote: > I'd have to see the current version of the code to be sure, but > define_method gives you a closure, so if you have a local variable > outside it, that variable will be captured. Or maybe an instance > variable. Can you post what you've currently got? class Foo def bar(*args, &block) if block_given? class << block @@return = {} lambd.define_method(:method_missing, (m, *args, &b) return @@return.merge!({ m.to_sym => args }) end end attributes = lambd.instance_eval(&block) end p attributes end end # Foo Thanks David, this is a good education for me. James