# Ruby Error and Performance Monitoring

> Use Sentry's Ruby performance & error monitoring to resolve performance issues across your entire stack. Discover how to get started for free today.

**URL:** https://sentry.io/for/ruby/

---

**Documentation:** [https://docs.sentry.io/platforms/ruby/](https://docs.sentry.io/platforms/ruby/)

## Install

### Ruby

Add the `sentry-ruby` gem to your Gemfile:

```ruby
gem "sentry-ruby"
```

Configure your SDK:

```ruby
Sentry.init do |config|
  config.dsn = 'https://<key>@sentry.io/<project>'
  config.traces_sample_rate = 1.0
end
```

See the [Ruby docs](https://docs.sentry.io/platforms/ruby/) for full setup options.

### Rails

Add `sentry-ruby` and `sentry-rails` to your `Gemfile`:

```ruby
gem "sentry-ruby"
gem "sentry-rails"
```

Initialize the SDK within your `config/initializers/sentry.rb`:

```ruby
Sentry.init do |config|
  config.dsn = 'https://<key>@sentry.io/<project>'
  config.breadcrumbs_logger = [:active_support_logger]
  config.traces_sample_rate = 1.0
  # or
  config.traces_sampler = lambda do |context|
    true
  end
end
```

See the [Rails docs](https://docs.sentry.io/platforms/ruby/guides/rails/) for full setup options.

### Sinatra

Grab the [Sentry Ruby SDK](https://github.com/getsentry/raven-ruby):

```ruby
gem "sentry-ruby"
```

Configure your DSN:

```ruby
require 'sentry-ruby'

Sentry.init do |config|
  config.dsn = 'https://<key>@sentry.io/<project>'
  config.breadcrumbs_logger = [:sentry_logger, :http_logger]
  config.traces_sample_rate = 1.0
  # or
  config.traces_sampler = lambda do |context|
    0.5
  end
end
```

See the [Sinatra docs](https://docs.sentry.io/platforms/ruby/) for full setup options.

## Features

### Ruby Performance Monitoring

Quickly identify Ruby [performance](/for/performance/) issues and view full end-to-end distributed trace to see the exact, poor-performing API call and surface any related errors.

### Ruby Monitoring with Complete Stack Traces

Take advantage of built-in integrations with Rails, Sidekiq, DelayedJob, and more of your favorite RubyGems. Enable asynchronous reporting so errors are logged quickly in a background job. Filter and group Ruby exceptions intuitively to eliminate noise.

### Fill In The Blanks About Ruby Errors

Expose important events that led to each Ruby exception: a string to label where the event took place, message, timestamp. Learn in which version a bug first appeared, merge duplicates, and know if things regress in a future release.

## FAQ

**What is the difference between Sentry and traditional logging?**

Traditional logging provides you with a trail of events. Some of those events are errors, but many times they're simply informational. Sentry is fundamentally different because we focus on exceptions, or in other words, we capture application crashes. We discuss in more detail [here](/vs/logging/) and on our [blog](https://blog.sentry.io/lets-get-ready-to-monitor/).

**What  languages does Sentry support?**

Sentry supports every major  language, framework, and library. You can browse each of them [here](/platforms/).

**How much does Sentry cost?**

You can get started for free. Pricing depends on the number of monthly events, transactions, and attachments that you send Sentry. For more details, visit our [pricing page](/pricing/).

**How does Sentry impact the performance of my app?**

Sentry doesn't impact a web site's performance.

If you look at the configuration options for when you initialize Sentry in your code, you'll see there's nothing regarding minimizing its impact on your app's performance. This is because our team of SDK engineers already developed Sentry with this in mind.

Sentry is a listener/handler for errors that asynchronously sends out the error/event to Sentry.io. This is non-blocking. The error/event only goes out if this is an error.

Global handlers have almost no impact as well, as they are native APIs provided by the browsers.

---

*Source: [sentry.io/for/ruby/](https://sentry.io/for/ruby/)*
