Resulta que el problema está en la gema mysql2. Hace algo realmente asombroso ...
Esencialmente, sustituye un valor de espera_tiempo de espera predeterminado de aproximadamente 25 días (2147483 s) propio como el valor de espera_tiempo de espera (probablemente la versión de sesión de espera_tiempo de espera) que usa la conexión, básicamente anulando cualquier configuración que especifiquemos en el servidor.
Estableciendo un valor wait_timeout: en config/database.yml el tiempo de espera funciona como debería. Sin embargo, cuando se interrumpe la conexión, aparece el error "El servidor mysql se ha ido".
Especificando un reconnect:true adjunto opción en base de datos.yml, cada vez que se reutiliza la conexión, el temporizador de la conexión se restablece, PERO después de eso, usa la configuración GLOBAL wait_timeout de mysql directamente
Espero que esto ayude a alguien