Naar hoofdinhoud gaan
Grape-applicaties worden officieel ondersteund. Het instrumenteren van Grape-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.

Installatie

Deze installatiehandleiding is voor Ruby-gem 3.12 en nieuwer. Voor applicaties die een oudere AppSignal voor Ruby-gem gebruiken, volgt u onze legacy installatiehandleiding.
Voeg na het installeren en configureren van de AppSignal-gem de AppSignal-integratie toe nadat de Grape-app is geladen. De Grape-integratie wordt vereist vanuit de AppSignal Ruby-gem en de event- en instrumentatie-middlewares worden toegevoegd in de volgende codevoorbeelden.
# 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
De volgende stap is het toevoegen van de AppSignal-middleware aan de basis-API-klasse van de applicatie. Deze rapporteert eventuele niet-afgehandelde excepties uit de applicatie.
# 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 installatie

Voor applicaties die AppSignal voor Ruby-gem 3.11 of ouder gebruiken, volgt u deze stappen om AppSignal te installeren in Grape-applicaties. De Grape-integratie wordt vereist vanuit de AppSignal Ruby-gem en de event handler- en instrumentatie-middlewares worden toegevoegd in de volgende codevoorbeelden.
# 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
De volgende stap is het toevoegen van de AppSignal-middleware aan de basis-API-klasse van de applicatie. Deze rapporteert eventuele niet-afgehandelde excepties uit de applicatie.
# api.rb

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

    # ...
  end
end

Gemounte Grape-apps

Het mounten van Grape-applicaties op Ruby on Rails-applicaties wordt ondersteund. De Ruby-gem moet een recente versie zijn om requests voor gemounte Grape-apps correct te instrumenteren.

Fouten negeren

Om een specifieke Grape-fout te negeren, stelt u de grape.skip_appsignal_error-vlag in de request-environment in. Door deze vlag op true te zetten, instrueert u AppSignal om geen fouten tijdens de request te rapporteren. Gebruik deze vlag alleen als u dynamisch fouten van een Grape-applicatie moet negeren. Specificeer foutklassen in de ignore_errors-optie om ze voor de hele applicatie te negeren. Zie onze documentatie over notificatie-instellingen voor meer informatie over het dempen van notificaties voor specifieke fouten.
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

Fouten rapporteren vanuit rescue_from

Als een fout in de app wordt afgehandeld met rescue_from, ontvangt en registreert AppSignal deze niet. Om de fout toch te rapporteren, roept u Appsignal.report_error aan in het rescue_from-blok. (Gebruik de Appsignal.set_error-helper bij gebruik van Ruby-gem versie 3 of ouder.)
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