Mikael Høilund
4/24/2008 9:35:00 PM
On Apr 24, 2008, at 23:26, Philipp Hofmann wrote:
> Hello,
>
> I was hoping that the following snippet would output
>
> test_method
>
> instead it raises an 'undefined method'.
>
>
> module Proxy
>
> def self.append_features(mod)
> mod.extend(ClassMethods)
> end
>
> module ClassMethods
>
> def proxy_method(name)
> self.class.send(:define_method, name) { puts "called #{name}" }
Here you're in class scope; self points to ProxyTest. You in essense
defined Class.test_method. Remove ".class", and it works.
>
> end
>
> end
>
> end
>
> class ProxyTest
>
> include Proxy
>
> proxy_method :test_method
>
> end
>
> proxy = ProxyTest.new
> proxy.test_method
>
>
> Any hints greatly appreciated.
> g phil
>
>