Pular para o conteúdo principal
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.
# config.ru
require "appsignal" # Adicione este require
require "hanami/boot"

# Carrega a integração com Hanami
Appsignal.load(:hanami)
# Inicia o AppSignal
Appsignal.start

run Hanami.app

# Para gem Ruby 3.11 e mais antigas
require "appsignal/integrations/hanami" # Adicione esta linha

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.)
# app/action.rb
# auto_register: false
# frozen_string_literal: true

require "hanami/action"

module MyHanamiApp
  class Action < Hanami::Action
    handle_exception StandardError => :handle_standard_error

    private

    def handle_standard_error(request, response, exception)
      # Reporta o erro ao AppSignal
      Appsignal.report_error(exception)

      # Renderiza página de erro customizada
      response.status = 500
      response.body = "Sorry, something went wrong handling your request"
    end
  end
end
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.