From: Dan Tenenbaum > Sent: Monday, December 11, 2006 1:28 PM > To: ruby-talk ML > Subject: best way to dynamically create new instance methods [snip] > What I want create_method() to do (simplified here) is, given the > argument "baz", add a method to the current instance of Foo that would > look like this if it were a traditional method (that is, not > dynamically > created): Assuming that you want each instance of foo to have its own list of methods: class Foo def initialize( *method_names ) method_names.each{ |meth_name| create_method( meth_name ) } end def create_method( meth_name ) ( class << self; self; end ).class_eval{ define_method( meth_name ){ |*args| args[0] } } end end f1 = Foo.new( :bar, 'baz' ) p f1.bar( 'a', 'b', 'c' ) #=> "a" f2 = Foo.new( 'whee' ) p f2.whee( 'yahoo' ) #=> "yahoo" p f2.bar #=> undefined method `bar' for #<Foo:0x2833f90> (NoMethodError)