Zum Hauptinhalt springen
Hanami wird offiziell unterstützt. Die Instrumentierung von Hanami-Anwendungen erfordert manuelles Setup. Folgen Sie den Installationsschritten in AppSignal, beginnend mit einem Klick auf „Add app” auf dem Accounts-Bildschirm.
Verwendet Ihre Anwendung eine Kombination aus Rails, Grape, Hanami, Padrino oder Sinatra? Folgen Sie unserem Leitfaden zum Instrumentieren mehrerer Rack-Anwendungen.
Diese Seite beschreibt die Integration für das Hanami-Framework, das über das Gem „hanami” installiert wird. Das Framework Hanami::API (aus dem Gem „hanami-api”) wird nicht unterstützt.

Installation

Nachdem Sie das AppSignal-Gem installiert haben, fügen Sie die AppSignal-Integration nach dem Require von hanami/boot in der config.ru-Datei hinzu.
# 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

Exception-Handling

Hanami verfügt standardmäßig über kein Exception-Handling. Der Webserver (etwa Puma oder Unicorn) zeigt eine einfache „internal server error”-Seite an, wenn in der App ein Fehler auftritt. Diese unbehandelten Ausnahmen werden automatisch an AppSignal gemeldet. Der Hanami-Leitfaden zum Exception-Handling erklärt, wie benutzerdefiniertes Exception-Handling zu Hanami-Anwendungen hinzugefügt werden kann, um eigene Fehlerseiten zu rendern. Behandelte Ausnahmen werden nicht automatisch an AppSignal gemeldet. Wir empfehlen, den folgenden Code zur Basis-Action-Klasse der Anwendung in app/action.rb hinzuzufügen, um Exception-Handling für StandardError zu ergänzen. Auf diese Weise ist es nicht nötig, jeder Action-Klasse Exception-Handling hinzuzufügen. Rufen Sie in der Methode handle_standard_error, die mit handle_exception konfiguriert wird, den Helper Appsignal.report_error auf, um die Ausnahme an AppSignal zu melden und keine Fehler zu verpassen, die von Ihrer App gemeldet werden. (Verwenden Sie den Helper Appsignal.set_error, wenn Sie Ruby-Gem-Version 3 oder älter verwenden.)
# 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
Nachdem Sie die Methode Appsignal.report_error zu den Hanami-Ausnahmen hinzugefügt haben, die Sie melden möchten, meldet AppSignal diese Fehler, sobald sie auftreten.