Ruby Domain Event Framework