From: Daniel Schierbeck Date: 2006-12-05T23:54:06+09:00 Subject: Re: How do I catch a missing method on a passed block? On Tue, 2006-12-05 at 08:04 +0900, J2M wrote: > I would like to invoke method_missing on baz in this code; > > x = Foo.new > x.bar { baz } > > I tried the following, and although the method is added to the proc > objects singleton class, the method_missing method never gets called. > Is there any way to achieve this? My current code (that doesn't work) > is below; > > class Foo > > def bar(*values, &block) > > if block_given? > > class << block > def method_missing(m, *args, &block) > puts "missing #{m}" > end > end > > block.call > > end > end > end class Foo def bar yield rescue NoMethodError => error # mojo goes here end end Cheers, Daniel