From: "Mikael Høilund" Date: 2008-04-25T06:34:56+09:00 Subject: Re: some metaprogramming with define_method 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 > >