# Integrations | Sentry for Ruby

The Sentry SDK uses integrations to hook into the functionality of popular frameworks and libraries to automatically instrument your application and give you the best data out of the box.

Some of our integrations are available as separate gems while others are available as patches that can be enabled from the `sentry-ruby` gem. You can find an overview of all available integrations below.

## [Gems](https://docs.sentry.io/platforms/ruby/integrations.md#gems)

The following table lists all integrations available as gems.

Simply add the relevant gems to your Gemfile and run `bundle install` to install them.

| Integration                                                                                                                                                                            | `Gemfile`                    |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
| [![ruby.rails icon](https://docs.sentry.io/_next/static/media/rails.5ed0bd10.svg)Rails](https://docs.sentry.io/platforms/ruby/guides/rails.md)                                         | `gem "sentry-rails"`         |
| [![ruby.sidekiq icon](https://docs.sentry.io/_next/static/media/sidekiq.ab3f07ea.svg)Sidekiq](https://docs.sentry.io/platforms/ruby/guides/sidekiq.md)                                 | `gem "sentry-sidekiq"`       |
| [![ruby.delayed\_job icon](https://docs.sentry.io/_next/static/media/ruby.07144e67.svg)Delayed Job](https://docs.sentry.io/platforms/ruby/guides/delayed_job.md)                       | `gem "sentry-delayed_job"`   |
| [![ruby.resque icon](https://docs.sentry.io/_next/static/media/ruby.07144e67.svg)Resque](https://docs.sentry.io/platforms/ruby/guides/resque.md)                                       | `gem "sentry-resque"`        |
| [![ruby.opentelemetry icon](https://docs.sentry.io/_next/static/media/ruby.07144e67.svg)OpenTelemetry](https://docs.sentry.io/platforms/ruby/tracing/instrumentation/opentelemetry.md) | `gem "sentry-opentelemetry"` |

## [Patches](https://docs.sentry.io/platforms/ruby/integrations.md#patches)

The following table lists all integrations available as patches and which ones are enabled by default.

You can use [`config.enabled_patches`](https://docs.sentry.io/platforms/ruby/configuration/options.md#enabled-patches) to enable or disable them.

```ruby
# enable :faraday patch
config.enabled_patches << :faraday

# disable :puma patch
config.enabled_patches.delete(:puma)
```

| Patch      | **Auto-enabled** |
| ---------- | ---------------- |
| `:http`    | ✓                |
| `:redis`   | ✓                |
| `:puma`    | ✓                |
| `:faraday` |                  |
| `:graphql` |                  |

## [Features](https://docs.sentry.io/platforms/ruby/integrations.md#features)

### [Rails](https://docs.sentry.io/platforms/ruby/integrations.md#rails)

The Rails integration is a feature rich integration that:

* captures Errors anywhere in your Rails application

* creates Transactions for incoming HTTP Requests

* records Spans in those Transactions for various important operations like:

  * database queries (performed with `activerecord`)
  * view renders

### [Queues](https://docs.sentry.io/platforms/ruby/integrations.md#queues)

The various Queue integrations for Sidekiq, Delayed Job and Resque create distributed traces connecting tasks that are performed in the background asynchronously.

The Rails integration also includes this functionality for `ActiveJob`.

### [OpenTelemetry](https://docs.sentry.io/platforms/ruby/integrations.md#opentelemetry)

The OpenTelemetry integration is used for exporting spans instrumented by an OpenTelemetry SDK into Sentry. See the [OpenTelemetry Setup](https://docs.sentry.io/platforms/ruby/tracing/instrumentation/opentelemetry.md) instructions for more details.

### [HTTP Requests](https://docs.sentry.io/platforms/ruby/integrations.md#http-requests)

Outgoing HTTP Requests are instrumented as Spans by the `:http` (for requests done with `Net::HTTP`) and `:faraday` patches.

### [GraphQL](https://docs.sentry.io/platforms/ruby/integrations.md#graphql)

GraphQL operations are instrumented as Spans by the `:graphql` patch.

### [Puma](https://docs.sentry.io/platforms/ruby/integrations.md#puma)

The `:puma` patch captures low level exceptions outside your application stack.

## Pages in this section

- [Standard library logging](https://docs.sentry.io/platforms/ruby/integrations/logging.md)
