Acontece que o problema está na gem mysql2. Ele faz uma coisa realmente incrível ...
Essencialmente, ele substitui um valor padrão wait_timeout de cerca de 25 dias (2147483s) como o valor wait_timeout (provavelmente a versão de sessão de wait_timeout) que a conexão usa, basicamente substituindo qualquer configuração que especificamos no servidor.
Ao definir um wait_timeout:valor em config/database.yml o tempo limite funciona como deveria. Quando a conexão é interrompida, no entanto, você recebe erros "o servidor mysql foi embora".
Ao especificar um reconnect:true acompanhante opção em database.yml, toda vez que a conexão é reutilizada, o timer da conexão é redefinido, MAS depois disso ele usa a configuração GLOBAL wait_timeout do mysql diretamente
Espero que isso ajude alguém