From: Logan Capaldo Date: 2006-12-06T00:07:25+09:00 Subject: Re: How do I catch a missing method on a passed block? On Tue, Dec 05, 2006 at 11:54:06PM +0900, Daniel Schierbeck wrote: > 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 > If ruby were common lisp, that could actually work. But it's not and our exceptions are not resuamble :). > > Cheers, > Daniel >