Naar hoofdinhoud gaan

Opmerkingen:

  • Deze functie is beschikbaar vanaf Ruby gem versie 1.3 en werkt alleen voor klassen.
  • Ondersteuning voor Ruby 3.0 keyword-argumenten is toegevoegd in Ruby gem 2.11.4.
Soms zijn instrumentation-blocks niet nauwkeurig genoeg. Elke applicatie is anders, en zo ook de code die deze laat draaien. Ontwikkelaars weten welke code, en nauwkeuriger, welke methodes geïnstrumenteerd moeten worden. Het is mogelijk om methodes in uw Ruby-code rechtstreeks met AppSignal te instrumenteren. Met de appsignal Ruby gem kunt u onze object-integraties gebruiken, die u enkele nuttige helpers bieden om dit te doen.

Installatie

Activeer de object-integratie door de volgende regel toe te voegen na het laden van de appsignal gem zelf
require 'appsignal/integrations/object'
en ga vervolgens verder met het specificeren van welke methodes u op welke klasse wilt testen.

Voorbeeld

require 'appsignal'
require 'appsignal/integrations/object'

class Foo
  def bar
    1
  end
  appsignal_instrument_method :bar

  def self.bar
    2
  end
  appsignal_instrument_class_method :bar
end

Foo.new.bar
# => 1
Foo.bar
# => 2

Gebruik

We hebben verschillende helpers voor instance-methodes en class-methodes, respectievelijk appsignal_instrument_method en appsignal_instrument_class_method. Roep ze aan op klasseniveau in elke Ruby-klasse, zelfs die uit de Ruby-standaardbibliotheek, en begin met instrumenteren. U hoeft niets anders in de klasse op te nemen; zodra u het integratiebestand laadt, wordt het overal beschikbaar. Instrumenteer elke methode door de helper aan te roepen met de naam van de methode die u wilt instrumenteren. Als de methode niet bestaat, gooit het een error, net zoals Ruby dat standaard zou doen. Zodra een request is verwerkt door AppSignal met dit soort instrumentation, kunt u de method-instrumentation zien in de event- uitsplitsing op de sample-pagina. Event tree with method instrumentation U kunt ook de naam van het event dat naar ons wordt gestuurd, aanpassen met de :name-optie.
class Foo
  def bar
  end
  appsignal_instrument_method :bar

  def self.bar
  end
  appsignal_instrument_class_method :bar, name: "bar.class_method.Foo.methods"
end