Logan Capaldo
12/5/2006 3:07:00 PM
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
>