Atualize para a última série 2.x
Antes de atualizar para a gem AppSignal para Ruby 3.0, primeiro atualize para a última gem da série 2.x. Esta versão registrará e exibirá avisos de descontinuação para itens que serão removidos na versão 3.x da gem. Execute os testes do seu app onde a gem está integrada e corrija quaisquer avisos de descontinuação e erros que possa encontrar. Esta etapa de atualização tornará o processo de upgrade mais fácil. Primeiro, noGemfile do app, atualize o version lock para ~> 2.0 e execute bundle update appsignal em um terminal no mesmo diretório do Gemfile.
Gemfile e execute bundle update appsignal novamente para atualizar para o AppSignal para Ruby 3.0.
Suporte ao Ruby 1.9 removido
A série 3.x da gem Ruby não suportará mais o Ruby 1.9 e versões mais antigas. O Ruby 1.9 está em End of Life desde 23 de fevereiro de 2015 e não deve mais ser usado em produção. Versões futuras da gem AppSignal para Ruby podem descontinuar outras versões End of Life do Ruby. Por favor, atualize para uma versão mais recente do Ruby para continuar usando o AppSignal para Ruby daqui pra frente.Compatibilidade com outras gems de instrumentação
Na série 3.x, a gem AppSignal para Ruby mudou os internals de todas as suas integrações com outras gems. Em vez de fazer aliasing de métodos para fornecer instrumentação, a série 3.x usaModule.prepend (introduzido no Ruby 2.0), um método para incluir Módulos Ruby em classes garantindo que o módulo incluído seja chamado primeiro.
O que isso significa para seus apps?
Outras gems de instrumentação podem usar tanto o método de aliasing quanto o Module.prepend para fornecer instrumentação. Esses métodos de instrumentação são incompatíveis entre si se usados nos mesmos métodos Ruby. Se uma gem usa aliasing de métodos, e outra Module.prepend, o app ficará preso em um loop e levantará um stack level too deep (SystemStackError).
O ecossistema Ruby parece estar caminhando para o método Module.prepend para fornecer instrumentação, então a gem do AppSignal atualizou seu método de instrumentação para ser mais compatível com outras gems.
Se um app começar a encontrar esse problema com a série 3.x do AppSignal para Ruby, atualize outras gems APM e de relatórios de erro no app. Elas podem ter sido atualizadas para instrumentar usando Module.prepend também.
Se o problema persistir, entre em contato com os mantenedores das outras gems para atualizar sua implementação para Module.prepend, e faça downgrade da gem AppSignal para Ruby para a série 2.x por enquanto. Por favor, também nos informe, para que possamos manter uma lista de gems compatíveis.
Para mais informações e contexto sobre essa mudança, veja a issue 603 no rastreador de issues da gem Ruby.
Módulos movidos
Alguns módulos na gem foram movidos ou renomeados. A série 2.x da gem imprimirá um aviso se encontrar algum, com a nova localização do módulo chamado. Esse aviso é impresso por um fallback quando o nome do módulo antigo é chamado. Esse aviso não será mais impresso se o novo nome do módulo estiver sendo chamado. Se um app estendeu ou aplicou monkeypatch em um módulo do AppSignal, o nome do módulo precisa ser atualizado para que o patch funcione novamente. Esteja avisado de que não fornecemos suporte para esses patches. Se um módulo privado foi removido sem substituição, não fornecemos mais a integração ou ela foi mesclada em outro módulo.Integração JavaScript removida
A gem AppSignal para Ruby incluía um middleware de rastreamento de exceções JavaScript, que foi removido na série 3.x. Em vez disso, recomendamos que você use nossa integração dedicada AppSignal para JavaScript front-end.Opções removidas
As opções a seguir não afetarão mais a gem AppSignal para Ruby, podem ser removidas dos seus apps.enable_frontend_error_catching- opção de configuração removidaAPPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING- opção de configuração via variável de ambiente removida
frontend_error_catching_path- opção de configuração removidaAPPSIGNAL_FRONTEND_ERROR_CATCHING_PATH- opção de configuração via variável de ambiente removida
Classes removidas
As classes a seguir foram removidas da gem Ruby e chamá-las resultará em umNameError.
Appsignal::JSExceptionTransaction- classe de transação JavaScript removidaAppsignal::Rack::JSExceptionCatcher- middleware removido
Comando appsignal notify_of_deploy removido
O comando appsignal notify_of_deploy foi removido. Em vez disso, recomendamos usar a opção de configuração revision para reportar deploys de forma mais precisa. Para mais informações sobre o tópico de marcadores de deploy, veja nossa seção de marcadores de deploy.
Se a opção revision não for uma boa substituta para o seu método de deploy, use a página da API de marcadores de deploy sobre como enviar a requisição para notificar o AppSignal sobre deploys. E veja nossa página Push & deploy para o seu app para um exemplo usando a configuração do seu app.
Descontinuações removidas
Na série 2.x e versões anteriores do AppSignal para Ruby, alguns comportamentos da gem do AppSignal podem ter sido descontinuados. A maioria dessas descontinuações foi removida na série 3.x. Na última versão da série 2.x do AppSignal para Ruby, todas essas descontinuações devem imprimir um aviso no STDERR e noappsignal.log quando ainda usadas. Por favor, verifique a saída do app e os logs enquanto estiver na última gem 2.x e corrija todos os avisos de descontinuação antes de atualizar. Cada descontinuação deve imprimir/registrar um aviso com as mudanças necessárias para resolver o aviso.