class Object # http://www.yohasebe.com/pages/trans-seeing-metaclasses-clearly/ def metaclass class << self self end end # http://www.yohasebe.com/pages/trans-seeing-metaclasses-clearly/ def meta_eval(&blk) metaclass.instance_eval(&blk) end # http://www.yohasebe.com/pages/trans-seeing-metaclasses-clearly/ def meta_def(name, &blk) meta_eval { define_method name, &blk } end # http://www.yohasebe.com/pages/trans-seeing-metaclasses-clearly/ def class_def(name, &blk) class_eval { define_method name, &blk } end # 1.8.7 エミュレート def tap yield(self) self end end