module Yema module Validations def self.included(base) super base.extend(ClassMethods) end def valid? errors.empty? end def rules self.class.rules end def errors Set.new.tap do |errors| rules.each { |rule| errors.merge(rule.errors(self)) } end end module ClassMethods def rules @rules ||= Registry::Rule.new end end end end