From: Mariano Kamp Date: 2006-12-20T05:47:27+09:00 Subject: class_eval and using a block instead of a String? Hi, given the following contrived example I am wondering how to use a block with class_eval instead of using the string like in the code below?! Any ideas? Cheers, Mariano require 'test/unit' include Test::Unit::Assertions class Base class << self def enhance(*attributes) class_eval do attr_reader *attributes end initializer = "def initialize(#{attributes.join(", ")})" attributes.each {|a| initializer << "@#{a}=#{a}\n"} initializer << "end" # ------ class_eval initializer # <------- # ------ end end end class Derived < Base; end Derived.enhance(:a, :b, :c) d = Derived.new("a", "b", "c") assert_equal "a", d.a assert_equal "b", d.b assert_equal "c", d.c