Skip to main content
Hanami é oficialmente suportado. Instrumentar aplicações Hanami requer alguma configuração manual. Siga os passos de instalação no AppSignal, começando por clicar em ‘Add app’ na tela de contas.
Sua aplicação está usando uma combinação de Rails, Grape, Hanami, Padrino ou Sinatra? Siga nosso guia sobre instrumentação de múltiplas aplicações Rack.
Esta página descreve a integração para o framework Hanami, instalado via a gem “hanami”. O framework Hanami::API (da gem “hanami-api”) não é suportado.

Instalação

Após instalar a gem AppSignal, adicione a integração AppSignal depois de requerer hanami/boot no arquivo config.ru.

Tratamento de exceptions

O Hanami não possui nenhum tratamento de exceptions por padrão. O servidor web (como Puma ou Unicorn) mostrará uma página básica de “internal server error” se um erro ocorrer no app. Essas exceptions não tratadas serão reportadas ao AppSignal automaticamente. O guia de tratamento de exceptions do Hanami explica como adicionar tratamento de exceptions customizado em aplicações Hanami para renderizar páginas de erro customizadas. Exceptions tratadas não serão reportadas ao AppSignal automaticamente. Recomendamos adicionar o seguinte código à classe base Action da aplicação encontrada em app/action.rb para adicionar tratamento de exceptions para StandardError. Dessa forma, não é necessário adicionar tratamento de exceptions a cada classe de action. No método handle_standard_error, configurado por handle_exception, chame o helper Appsignal.report_error para reportar a exception ao AppSignal e não perder nenhum erro reportado pelo seu app. (Use o helper Appsignal.set_error ao usar a gem Ruby versão 3 ou mais antiga.)
Depois de adicionar o método Appsignal.report_error às exceptions do Hanami que você deseja reportar, o AppSignal reportará esses erros sempre que ocorrerem.

Atributos de span

Somente no modo collector: isso se aplica quando o AppSignal para Ruby é executado no modo collector. Nos demais casos, não tem efeito.
O span da requisição carrega:
  • http.request.method — o método da requisição.
  • url.scheme, url.path e url.query — o endereço requisitado.
  • http.response.status_code — o status com o qual sua aplicação respondeu.
Um span para uma requisição que gerou um erro também carrega error.type, a classe do erro.

Tracing distribuído

Somente no modo collector: isso se aplica quando o AppSignal para Ruby é executado no modo collector. Nos demais casos, não tem efeito.
Uma requisição que chega com um header de requisição traceparent continua o trace que ele nomeia. A requisição aparece dentro do trace do serviço que a chamou, sob a requisição que a causou. Você pode seguir uma requisição lenta desse serviço até esta aplicação sem trocar de trace. Os clientes HTTP suportados pelo AppSignal iniciam o trace. Uma requisição sem o header inicia um novo.