usable descriptive ruby exceptions