NAME ---- forkhandle SYNOPSIS -------- connection = ForkHandle.get(:db_connection){ Db.connect(config) } DESCRIPTION ----------- managing connection across forks and threads is tricky. most libraries use and icky idiom that requires each and every client to configure it's own forking logic, something like MyLameLib.after_fork do # close handles you should close end many libs also do not provide you with per-thread connection, making MT a manual process. a teeny bit of code can solve both. the concept is simple: maintain a table of connections scoped by process id and thread id. any miss will trigger auto-scrubbing the table, but only connections from another process (we've been forked) will be closed. this gives * per thread connections * per process connections * auto-matic cleanup after a fork