Atualize para a última série 3.x
Antes de atualizar para a gem AppSignal para Ruby 4.0, atualize para a última gem da série 3.x. Esta versão imprimirá e registrará avisos de descontinuação para itens que foram removidos na versão 4.x da gem Ruby. Execute os testes do seu app com o qual a gem está integrada e corrija quaisquer avisos de descontinuação e erros que possa encontrar. Primeiro, noGemfile do app, atualize o version lock para ~> 3.0 e execute bundle update appsignal em um terminal no mesmo diretório do Gemfile.
appsignal.log durante sua operação.
Atualize para a última série 4.x
Depois que todos os avisos de descontinuação forem resolvidos usando a versão 3 da gem Ruby, remova o version lock doGemfile e execute bundle update appsignal novamente para atualizar o AppSignal para Ruby para a versão 4.
Mudanças
Abaixo estão todas as mudanças notáveis entre a última versão 3 da gem Ruby e a nova versão 4. Por favor, revise-as e atualize sua aplicação conforme descrito.Biblioteca principal
- O método
Appsignal.start_loggerfoi removido. O logger agora é iniciado automaticamente emAppsignal.start. As aplicações precisam remover a chamadaAppsignal.start_logger. - A configuração da gem AppSignal para Ruby é congelada após
Appsignal.startser chamado. A configuração não pode mais ser modificada depois que a gem Ruby foi iniciada. - O método
Appsignal.startsó pode ser chamado uma vez. Chamadas subsequentes são ignoradas pela gem Ruby.
Configuração
- O AppSignal não iniciará se o carregamento do arquivo
config/appsignal.ymlcausar um erro. Verifique a saída da aplicação ou o arquivoappsignal.logpara quaisquer avisos. - Configure o AppSignal em Ruby com o novo helper
Appsignal.configure. Apps que usam o padrãoAppsignal.config = Appsignal::Config.new(...)devem atualizar seus apps para usar este método. - O método
Appsignal.config =foi removido. Em vez disso, use o helperAppsignal.configurepara configurar o AppSignal em Ruby. - A opção
skip_session_datafoi removida. Use a opçãosend_session_dataem vez disso. - A opção
debugfoi removida. Use a opçãolog_level: debugem vez disso. - A opção
transaction_debug_modefoi removida. Use a opçãolog_level: traceem vez disso. - A opção
working_dir_pathfoi removida. Use a opçãoworking_directory_pathem vez disso.
Integrações
- O middleware
Appsignal::Rack::EventHandlerfoi adicionado. Ele adicionará a tagresponse_statusàs amostras e rastreará uma métricaresponse_statuscom o código de status de resposta da requisição. Veja a documentação da nossa integração Rack para mais informações. - O middleware
Appsignal::Rack::InstrumentationMiddlewaresubstitui o middlewareAppsignal::Rack::GenericInstrumentation. Este novo middleware não define a action como “unknown” por padrão. É necessário definir o nome da action em cada endpoint do app comAppsignal.set_actionao usar apenas o middlewareInstrumentationMiddleware. Veja a documentação da nossa integração Rack para mais informações. Appsignal::Grape::Middlewarefoi renomeado paraAppsignal::Rack::GrapeMiddleware.- O
Appsignal::Rack::StreamingListenerfoi substituído porAppsignal::Rack::InstrumentationMiddleware. - O
Appsignal::Hooks::SidekiqPluginfoi removido sem substituição. - As integrações Grape, Hanami, Padrino e Sinatra agora usam o mecanismo
Appsignal.loadpara integrar com essas bibliotecas. Por favor, siga os guias de instalação dessas bibliotecas para atualizar para o novo mecanismo de carregamento.- Sinatra
- Hanami
- Grape
- Padrino
- Usando mais de uma dessas bibliotecas ou montando-as em um app Rails? Siga também este guia.
- Os erros e problemas de desempenho reportados pela nossa integração Rake agora são reportados sob o namespace “rake”.
Instrumentação personalizada
- O helper
Appsignal.report_errorfacilita reportar erros sempre, sem precisar conhecer a diferença entre os helpersAppsignal.set_erroreAppsignal.send_error.
- Múltiplos erros podem ser reportados em uma transação com o helper
Appsignal.report_error. - Os helpers
Appsignal.monitor_transactioneAppsignal.monitor_single_transactionsão substituídos pelos helpersAppsignal.monitoreAppsignal.monitor_and_stop.- Nota: versões mais recentes da gem Ruby descontinuaram o helper
Appsignal.monitor_and_stop.
- Nota: versões mais recentes da gem Ruby descontinuaram o helper
- Novos helpers para adicionar tags e dados de amostra (parâmetros, headers de requisição, dados de sessão e dados personalizados) a transações. Veja a documentação dos helpers de customização para mais informações.
- Os dados de amostra são editados por padrão. Adicionar parâmetros adicionais, headers de requisição, dados de sessão e dados personalizados os mesclará com os valores definidos anteriormente. Veja a documentação dos helpers de customização para mais informações.
- O helper
Appsignal::Transaction::GenericRequestfoi removido. Use nossos helpers de customização para adicionar metadados à transação. - As chaves de ambiente de requisição
appsignal.actioneappsignal.routeforam removidas. Use o helperAppsignal.set_actionpara definir o nome da action. - Os argumentos
tagsenamespaceforam removidos dos helpersAppsignal.set_erroreAppsignal.send_error. Use o método de bloco para personalizar a transação antes que ela seja enviada. Veja nosso guia de tratamento de exceções para mais informações. - A constante
Appsignal::Minutelyfoi renomeada paraAppsignal::Probes. - O método
Appsignal::Probes.probes.registerfoi substituído porAppsignal::Probes.register. Veja nossa documentação de minutely probes para mais informações. - Os helpers
Appsignal.set_host_gaugeeAppsignal.set_process_gaugeforam removidos sem substituição. Em vez disso, marque a métrica com o hostname ou ID do processo usando o helperAppsignal.set_gauge. - O helper
Appsignal.listen_for_errorfoi removido sem substituição. Em vez disso, capture os erros manualmente usandorescue => errore os reporte usando o helperAppsignal.report_error.
Internals da biblioteca
Listadas aqui estão mudanças nos internals da biblioteca que podem ter sido previamente usadas em nossa documentação ou casos de suporte. Recomendamos que você evite continuar dependendo desses recursos. Eles são componentes privados e podem mudar a qualquer momento. Mudanças incompatíveis incluem:- Os métodos
Appsignal::Transaction.createeAppsignal::Transaction.newnão aceitam mais os argumentosid,requesteoptions. O ID da transação agora é gerado automaticamente.- Em vez de criar manualmente um objeto Transaction, use o helper
Appsignal.monitor. - Para definir metadados na transação, use nossos helpers de customização.
- Em vez de criar manualmente um objeto Transaction, use o helper
- O método
Appsignal::Transaction#set_http_or_background_actionfoi removido. Use o helperAppsignal.set_actionem vez disso. - O método
Appsignal::Transaction#set_http_or_background_queue_startfoi removido. Use o helperAppsignal::Transaction#set_queue_startem vez disso. - O helper
AppSignal::Transaction#params=foi removido. Use o helperAppsignal.add_paramsem vez disso.