From: J2M Date: 2006-12-12T21:37:12+09:00 Subject: Re: How do I catch a missing method on a passed block? This is what I finally ended up with - which I think is quite elegant :) class Foo def bar(quantal, *args, &block) if block_given? lambd = lambda(&block) class << lambd @@return = {}.extend(Appenders::Hashs) def method_missing(m, *args, &block) return @@return << { m.to_sym => args_to_attributes(args) } end end attributes = lambd.instance_eval(&lambd) end parse quantal, attributes end end # Foo What made this sweet for me was turning the &block into a lambda let me return the result from the instance_eval to bar where other solutions kept them in scope of the &block. James