Skip to main content

Ruby

Supported platforms#

LinuxmacOSWindowsDocker
โœ…โœ…โœ…

Profiling Ruby applications#

Add the pyroscope gem to your Gemfile:

bundle add pyroscope

Basic Configuration#

Add the following code to your application. If you're using rails, put this into config/initializers directory. This code will initialize pyroscope profiler and start profiling:

require 'pyroscope'
Pyroscope.configure do |config|  config.application_name = "my.ruby.app" # replace this with some name for your application  config.server_address   = "http://my-pyroscope-server:4040" # replace this with the address of your pyroscope server  # config.auth_token     = "{YOUR_API_KEY}" # optionally, if authentication is enabled, specify the API keyend

Tags#

Pyroscope ruby integration provides a number of ways to tag profiling data. For example, you can provide tags when you're initializing the profiler:

require 'pyroscope'
Pyroscope.configure do |config|  config.application_name = "my.ruby.app"  config.server_address   = "http://my-pyroscope-server:4040"
  config.tags = {    "hostname" => ENV["HOSTNAME"],  }end

or you can dynamically tag certain parts of your code:

Pyroscope.tag_wrapper({ "controller": "slow_controller_i_want_to_profile" }) do  slow_codeend

Auto-Instrumentation#

Rails#

By default, if you add pyroscope to a rails application it will automatically tag your actions with action="<controller_name>/<action_name>" tag.

To disable rails autoinstrumentation, set autoinstrument_rails to false:

Pyroscope.configure do |config|  config.autoinstrument_rails = false  # more configurationend

Examples#

Check out this example ruby project in our repository for examples of how you can use these features.