Handy! A lot of Ruby libraries do a pretty bad job protecting their users from underlying exceptions that should be handled within the library. I'm hoping that with exception causes in Ruby 2.1, we'll see more libraries wrapping common exceptions.<p>Another option for dealing with sloppy exception handling by libraries is toe_tag, which we open-sourced at my work:<p><a href="https://github.com/crowdcompass/toe_tag" rel="nofollow">https://github.com/crowdcompass/toe_tag</a><p>It allows you to declare groups of exceptions that can be caught with a single rescue clause. This has been extremely useful when dealing with ActiveRecord's tendency to bubble up exceptions from the underlying drivers -- the native and JDBC drivers for Postgres raise completely different exceptions for the same errors.<p>In some cases, exception classes aren't enough to determine whether an exception actually should be caught. A lot of libraries end up forcing you to make decisions based on the text of the message, or on some custom method (#error_code or what have you). toe_tag helps clean up those checks too.
Original gem author here!<p>We were scratching out own itch by doing this. This is currently used by several of our projects.<p>It does feel like the HTTP libraries should be better and handling these various exceptions. Since they don't, we've ended up writing this.<p>For the most part, whenever we do any HTTP call, we are expecting a specific return code and we want to raise an easy to handle exception when this happens. However, many HTTP call don't even get to the point where an error code is return when the network is not reliable. We've found that in most case, we want to handle that exception in the same way than an unexpected error code.<p>This little gem let us do that easily.<p>Enjoy :)