1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
class Class def abstract(*methods) methods.each do |method| define_method method do raise NotImplementedError end end end def hash_on(delegatee) define_method :eql? do |other| self == other end delegate :hash, :to => delegatee end end