puma/puma — pull request #566 by sheltond (2014-08-01 10:32:52+00:00)
Title: Added on_worker_shutdown mechanism

I implemented this because I was having the same problem as johnkchow who opened issue #562: I use a system which does operations in a background thread within a Rails process, and I need to defer the shutdown of Puma worker processes until any background operations are done.

This patch just calls an array of hooks immediately before the worker exits (after it has stopped accepting connections), and blocks until the hooks return.

The user can add an "on_worker_shutdown" section in their Puma configuration file where they can call whatever function they need to block until their background jobs are finished.