From: Suraj Kurapati Date: 2006-11-18T16:53:10+09:00 Subject: Re: Metaprogammatically define methods. Max Russell wrote: > testlist = Array.new > > File.open('readme.txt', 'r') do |eachline| > while (line = eachline.gets) > testlist << line > end > end > #puts testlist testlist = File.open('readme.txt').readlines > > testlist.each { |entry| > code = < def test_#{entry}() > puts "testing #{entry}" > end > METHOD_TEMPLATE > } > and then call each method I've defined. However, I'm not sure I'm going > about this the correct way. Use define_method whenever possible. The only case where you would put code in a string (and then load it using eval) is if your methods need to accept a block argument (define_method does not accept block argument until Ruby 1.9). class Foo File.open('readme.txt').readlines.each do |entry| define_method "test_#{entry}".to_sym do puts "testing #{entry}" end end end Foo.new.test_whatever -- Posted via http://www.ruby-forum.com/.