Há outro possível motivo para esse erro, que é o pool de conexão do ActiveRecord ceifeira . Quando ativado, o reaper verifica o pool de conexões em busca de conexões "mortas" e as fecha. Em meus testes, parece ser excessivamente zeloso e também fecha conexões perfeitamente vivas (geralmente aquelas que executam consultas um pouco maiores).
Tente limpar
reaping_frequency
da sua configuração de banco de dados (que o desativa) e veja se isso ajuda. Examine sua base de código para essa string e certifique-se de que ela não esteja definida (ou simplesmente removida!). Se você vir uma linha como config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10
, saiba que o || 10
está, na verdade, definindo um padrão baixo de 10s. Esse padrão estava na base de código do Rails por um tempo, até que a alteração foi revertida
devido a vários problemas, incluindo eliminar consultas de longa duração
, mas ainda é recomendado pela Heroku
. Se desabilitar o reaper corrigir as coisas, eu recomendaria deixá-lo desabilitado. Rails não o define mais por padrão, e parece causar mais problemas do que resolver.
Eu tive um erro como o seu, e foi assim que o consertei. Pessoalmente, estou mantendo-o desativado. Escrevi sobre meu problema específico com mais detalhes no meu blog .