From: Eero Saynatkari Date: 2005-12-12T13:20:23+09:00 Subject: Re: About class methods On 2005.12.12 13:07, "jonathan wrote: > unknown wrote: > > > > > class MyClass > > end > > > > def extend_class(classname) > > ex = Object.const_set(classname.to_s + "_extension", Class.new) > > ex.class_eval do > > def new_method1 > > puts "new method" > > end > > end > > end > > > > extend_class(MyClass) > > x = MyClass_extension.new > > x.new_method1 > > > > Oh. That's a neat way of doing it. Would the code below also work in > order to support a dynamic method name? > > class MyClass > end > > def extend_class(classname, methodname) > ex = Object.const_set(classname.to_s + "_extension", Class.new) > ex.class_eval %{ > def #(methodname) > puts "new method" > end } > end > end Well, there is always define_method: # This code for illustrative purposes only. This is unadvisable. class Class def extend_by(method_name, &block) o = Object.const_set("#{self.name}Extension", Class.new(self)) o.class_eval { define_method(method_name, &block) } o end end class Foo end Extension = Foo.extend_by('quux') { puts "Hello from quux!" } Extension.new.quux > --J E