Okazuje się, że problem tkwi w gemie mysql2. To naprawdę niesamowita rzecz ...
Zasadniczo zastępuje on domyślną wartość wait_timeout około 25 dni (2147483s) jako wartość wait_timeout (prawdopodobnie sesyjną wersję wait_timeout), której używa połączenie, zasadniczo zastępując wszelkie ustawienia określone na serwerze.
Ustawiając wait_timeout:wartość w config/database.yml limit czasu działa tak, jak powinien. Jednak gdy połączenie zostanie zabite, pojawiają się błędy „serwer mysql zniknął”.
Określając towarzyszące ponowne połączenie:prawda opcja w database.yml, za każdym razem, gdy połączenie jest ponownie używane, licznik czasu połączenia jest resetowany, ALE potem używa ustawienia GLOBAL wait_timeout bezpośrednio z mysql
Mam nadzieję, że to komuś pomoże