Passer au contenu principal
Hanami est officiellement pris en charge. L’instrumentation des applications Hanami nécessite une configuration manuelle. Suivez les étapes d’installation dans AppSignal en commençant par cliquer sur « Add app » sur l’écran des comptes.
Votre application utilise-t-elle une combinaison de Rails, Grape, Hanami, Padrino ou Sinatra ? Suivez notre guide pour instrumenter plusieurs applications Rack.
Cette page décrit l’intégration du framework Hanami, installé via la gem « hanami ». Le framework Hanami::API (de la gem « hanami-api ») n’est pas pris en charge.

Installation

Après avoir installé la gem AppSignal, ajoutez l’intégration AppSignal après avoir requis hanami/boot dans le fichier config.ru.
# 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

Gestion des exceptions

Hanami n’a pas de gestion des exceptions par défaut. Le serveur web (comme Puma ou Unicorn) affichera une page basique « internal server error » si une erreur se produit dans l’application. Ces exceptions non gérées seront automatiquement signalées à AppSignal. Le guide de gestion des exceptions Hanami explique comment ajouter une gestion personnalisée des exceptions aux applications Hanami pour afficher des pages d’erreur personnalisées. Les exceptions gérées ne seront pas signalées automatiquement à AppSignal. Nous recommandons d’ajouter le code suivant à la classe Action de base de l’application située dans app/action.rb pour ajouter la gestion des exceptions pour StandardError. De cette façon, il n’est pas nécessaire d’ajouter la gestion des exceptions à chaque classe d’action. Dans la méthode handle_standard_error, configurée par handle_exception, appelez l’assistant Appsignal.report_error pour signaler l’exception à AppSignal et ne manquer aucune erreur signalée par votre application. (Utilisez l’assistant Appsignal.set_error lorsque vous utilisez la gem Ruby version 3 ou antérieure.)
# 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
Après avoir ajouté la méthode Appsignal.report_error aux exceptions Hanami que vous souhaitez signaler, AppSignal signalera ces erreurs chaque fois qu’elles se produiront.