Zum Hauptinhalt springen
Grape-Anwendungen werden offiziell unterstützt. Die Instrumentierung von Grape-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.

Installation

Diese Installationsanleitung gilt für Ruby Gem 3.12 und neuer. Für Anwendungen, die ein älteres AppSignal-für-Ruby-Gem verwenden, folgen Sie unserer Legacy-Installationsanleitung.
Nachdem Sie das AppSignal-Gem installiert und konfiguriert haben, fügen Sie die AppSignal-Integration hinzu, nachdem die Grape-App geladen wurde. Die Grape-Integration wird aus dem AppSignal-Ruby-Gem geladen, und die Event- und Instrumentation-Middlewares werden in den folgenden Codebeispielen hinzugefügt.
# 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
Der nächste Schritt besteht darin, die AppSignal-Middleware der Basis-API-Klasse der Anwendung hinzuzufügen. Sie meldet alle unbehandelten Ausnahmen aus der Anwendung.
# api.rb

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

    # ...
  end
end

Legacy-Installation

Anwendungen, die AppSignal für Ruby Gem 3.11 oder älter verwenden, folgen diesen Schritten, um AppSignal in Grape-Anwendungen zu installieren. Die Grape-Integration wird aus dem AppSignal-Ruby-Gem geladen, und der Event-Handler und die Instrumentation-Middlewares werden in den folgenden Codebeispielen hinzugefügt.
# 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
Der nächste Schritt besteht darin, die AppSignal-Middleware der Basis-API-Klasse der Anwendung hinzuzufügen. Sie meldet alle unbehandelten Ausnahmen aus der Anwendung.
# api.rb

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

    # ...
  end
end

Eingebundene Grape-Apps

Das Einbinden von Grape-Anwendungen in Ruby on Rails-Anwendungen wird unterstützt. Das Ruby-Gem muss eine aktuelle Version sein, um Anfragen für eingebundene Grape-Apps korrekt zu instrumentieren.

Fehler ignorieren

Um einen bestimmten Grape-Fehler zu ignorieren, setzen Sie das Flag grape.skip_appsignal_error in der Request-Umgebung. Wenn Sie dieses Flag auf true setzen, weist es AppSignal an, während der Anfrage keine Fehler zu melden. Verwenden Sie dieses Flag nur, wenn Sie Fehler aus einer Grape-Anwendung dynamisch ignorieren müssen. Geben Sie Fehlerklassen in der Option ignore_errors an, um sie für die gesamte Anwendung zu ignorieren. Weitere Informationen zum Stummschalten von Benachrichtigungen für bestimmte Fehler finden Sie in unserer Dokumentation zu Benachrichtigungseinstellungen.
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

Fehler aus rescue_from melden

Wenn ein Fehler in der App mit rescue_from abgefangen wird, erhält und erfasst AppSignal ihn nicht. Um den Fehler trotzdem zu melden, rufen Sie Appsignal.report_error im rescue_from-Block auf. (Verwenden Sie den Helper Appsignal.set_error, wenn Sie Ruby-Gem-Version 3 oder älter nutzen.)
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