# Create new methods on a class # One way is to use Eval method_name = 'my_method' eval <<-EOC def #{method_name} 'You called #{method_name}' end EOC puts my_method # Another way is to use define_method class Clazz define_method(:ameth) do |i| # 10.times { yield self } i.call(self) end end # Have to use lambda (or proc), can't pass a &block # argument to another block. Clazz.new.ameth(lambda { |me| puts me })