Some notes about Puma that I collected while moving Shipit to work with Puma.
- Shipit is using a gem called pubsubstub to handle sockets. That gem will force the app server connection to be alive as long as the socket is open.
- On the other side, Rails 5 introduced ActionCable that acts as a seperate process that uses EventMachine to handle sockets, thus after initiating the socket connection, the app server gets out of the picture. Unfortunatly, Shipit doesn't use ActionCable.
- Has no worker request timeout. There is a setting called worker_timeout, but that's not for request timeout. Suggested workaround is to set Rack timeout, or have Nginx infront of it.