Add method instrumentation

ℹ️ Notes:

  • This feature is available since Ruby gem version 1.3 and only works for classes.

  • Ruby 3.0 support for keyword arguments was added in Ruby gem 2.11.4.

Sometimes instrumentation blocks are not accurate enough. Every application is different, and so is the code that runs it. Developers know what code and, more accurately, what methods to instrument.

It's possible to instrument methods in your Ruby code directly with AppSignal. Using the appsignal Ruby gem you can use our object integrations which provides you with some useful helpers to do so.

Installation

Activate the object integration by requiring the following line after loading the appsignal gem itself

require 'appsignal/integrations/object'

and proceed to specify which methods you want to test on any class you want.

Example

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

Usage

We have different helpers for instance methods and class methods, appsignal_instrument_method and appsignal_instrument_class_method respectively.

Call them on class level in any Ruby class, even those from the Ruby standard library, and start instrumenting. You don't need to include anything else in the class, once you load the integration file it becomes available everywhere.

Instrument any method by calling the helper with the name of the method you want to instrument. If the method does not exist, it will throw an error, just like Ruby would do by default.

Once a request has been processed by AppSignal with this type of instrumentation you will be able to see the method instrumentation in the event breakdown on the sample page.

Event tree with method instrumentation

You're also able to customize the name of the event that's send to us using the :name option.

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

Want to help us improve this documentation page?

Create a pull request

Need more help?

Contact us and speak directly with the engineers working on AppSignal. They will help you get set up, tweak your code and make sure you get the most out of using AppSignal.

Contact us

Start a trial - 30 days free

AppSignal is a great way to monitor your Ruby, Elixir & Node.js applications. Works great with Rails, Phoenix, Express and other frameworks, with support for background jobs too. Let's improve your apps together.

Start a trial