Ruby event dispatch library