Naar hoofdinhoud gaan
Hanami wordt officieel ondersteund. Het instrumenteren van Hanami-applicaties vereist enige handmatige configuratie. Volg de installatiestappen in AppSignal, te beginnen met het klikken op ‘Add app’ op het accountsscherm.
Gebruikt uw applicatie een combinatie van Rails, Grape, Hanami, Padrino of Sinatra? Volg dan onze handleiding voor het instrumenteren van meerdere Rack-applicaties.
Deze pagina beschrijft de integratie voor het Hanami-framework, geïnstalleerd via de “hanami”-gem. Het Hanami::API-framework (van de “hanami-api”-gem) wordt niet ondersteund.

Installatie

Voeg na het installeren van de AppSignal-gem de AppSignal-integratie toe na het requiren van hanami/boot in het config.ru-bestand.
# config.ru
require "appsignal" # Add this require
require "hanami/boot"

# Load the Hanami integration
Appsignal.load(:hanami)
# Start AppSignal
Appsignal.start

run Hanami.app

# For Ruby gem 3.11 and older
require "appsignal/integrations/hanami" # Add this line

Excepties afhandelen

Hanami heeft standaard geen exceptieafhandeling. De webserver (zoals Puma of Unicorn) toont een basis “internal server error”-pagina als er een fout optreedt in de app. Deze niet-afgehandelde excepties worden automatisch aan AppSignal gerapporteerd. De Hanami exception handling-handleiding legt uit hoe u aangepaste exceptieafhandeling kunt toevoegen aan Hanami-applicaties om aangepaste foutpagina’s weer te geven. Afgehandelde excepties worden niet automatisch aan AppSignal gerapporteerd. We raden aan de volgende code toe te voegen aan de basis-Action-klasse van de applicatie in app/action.rb om exceptieafhandeling voor StandardError toe te voegen. Op deze manier hoeft u geen exceptieafhandeling aan elke action-klasse toe te voegen. Roep in de handle_standard_error-methode, geconfigureerd door handle_exception, de helper Appsignal.report_error aan om de exceptie aan AppSignal te rapporteren en geen fouten te missen die door uw app worden gemeld. (Gebruik de Appsignal.set_error-helper bij gebruik van Ruby-gem versie 3 of ouder.)
# 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)
      # Report the error to AppSignal
      Appsignal.report_error(exception)

      # Render custom error page
      response.status = 500
      response.body = "Sorry, something went wrong handling your request"
    end
  end
end
Nadat u de Appsignal.report_error-methode aan de Hanami-excepties die u wilt rapporteren heeft toegevoegd, zal AppSignal deze fouten rapporteren zodra ze optreden.