module Lib def self.my_attr_accessor(klass, attr) klass.class_eval "def #{attr.to_s}; @#{attr.to_s}; end" klass.class_eval "def #{attr.to_s}=(arg); @#{attr.to_s} = arg; end" end end class Car Lib::my_attr_accessor(self, 'color') end c = Car.new c.color = 'rood' puts c.color #=> 'rood' c.color = 'groen' puts c.color #=> 'groen' puts "Hooray!!!!" #=> 'Hooray!!!!'