Passer au contenu principal
Les applications Grape sont officiellement prises en charge. L’instrumentation des applications Grape 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.

Installation

Ce guide d’installation est destiné à la gem Ruby 3.12 et versions ultérieures. Pour les applications utilisant une gem AppSignal for Ruby plus ancienne, suivez notre guide d’installation hérité.
Après avoir installé et configuré la gem AppSignal, ajoutez l’intégration AppSignal après le chargement de l’application Grape. L’intégration Grape est requise à partir de la gem AppSignal Ruby, et les middlewares d’événement et d’instrumentation sont ajoutés dans les exemples de code suivants.
# config.ru
require "appsignal" # Add this require

# Load the Grape integration
Appsignal.load(:grape)

# Add the AppSignal Rack event middleware
# AppSignal for Ruby gem 4.7+ required
use Appsignal::Rack::EventMiddleware

# Require the app
require_relative "api"

# Start AppSignal
Appsignal.start

# Start the app
run Acme::API
L’étape suivante consiste à ajouter le middleware AppSignal à la classe API de base de l’application. Il signalera toutes les exceptions non gérées de l’application.
# api.rb

module Acme
  class API < Grape::API
    # Add this line
    insert_before Grape::Middleware::Error, Appsignal::Rack::GrapeMiddleware # Include this middleware

    # ...
  end
end

Installation héritée

Pour les applications utilisant la gem AppSignal for Ruby 3.11 ou plus ancienne, suivez ces étapes pour installer AppSignal dans les applications Grape. L’intégration Grape est requise à partir de la gem AppSignal Ruby, et le gestionnaire d’événements et les middlewares d’instrumentation sont ajoutés dans les exemples de code suivants.
# config.ru
require "appsignal/integrations/grape" # Add this require

# Configure AppSignal
Appsignal.config = Appsignal::Config.new(
  Dir.pwd,        # The root of your app
  ENV["RACK_ENV"] # The environment of your app (development/production)
)
# Start AppSignal
Appsignal.start_logger # Not required in Ruby gem 3.9.3+
Appsignal.start

# Add the AppSignal Rack EventHandler
# AppSignal for Ruby gem 3.8+ required
use ::Rack::Events, [Appsignal::Rack::EventHandler.new]

# Require the app
require_relative "api"

# Start the app
run Acme::API
L’étape suivante consiste à ajouter le middleware AppSignal à la classe API de base de l’application. Il signalera toutes les exceptions non gérées de l’application.
# api.rb

module Acme
  class API < Grape::API
    # Add this line
    insert_before Grape::Middleware::Error, Appsignal::Grape::Middleware # Include this middleware

    # ...
  end
end

Applications Grape montées

Le montage d’applications Grape sur des applications Ruby on Rails est pris en charge. La gem Ruby doit être dans une version récente pour instrumenter correctement les requêtes pour les applications Grape montées.

Ignorer des erreurs

Pour ignorer une erreur Grape spécifique, définissez l’indicateur grape.skip_appsignal_error dans l’environnement de la requête. Régler cet indicateur sur true indiquera à AppSignal de ne signaler aucune erreur pendant la requête. N’utilisez cet indicateur que si vous devez ignorer dynamiquement les erreurs d’une application Grape. Spécifiez les classes d’erreurs dans l’option ignore_errors pour les ignorer pour l’ensemble de l’application. Pour plus d’informations sur la désactivation des notifications pour des erreurs spécifiques, consultez notre documentation sur les paramètres de notification.
get "/" do
  env["grape.skip_appsignal_error"] = true # Add this line to an endpoint or callback
  raise "uh oh" # Example error, don't copy this
end

Signalement des erreurs depuis rescue_from

Si une erreur est récupérée dans l’application à l’aide de rescue_from, AppSignal ne la recevra pas et ne la suivra pas. Pour signaler tout de même l’erreur, appelez Appsignal.report_error dans le bloc rescue_from. (Utilisez l’assistant Appsignal.set_error lorsque vous utilisez la gem Ruby version 3 ou antérieure.)
class Api < ::Grape::API
  insert_before Grape::Middleware::Error, Appsignal::Grape::Middleware

  format :json

  rescue_from :all do |error|
    Appsignal.report_error(error)
    error!({ :error => "error message" }.to_json, 500)
  end
end