Skip to content

Releases: getsentry/sentry-ruby

6.6.0

01 Jun 16:37

Choose a tag to compare

New Features ✨

  • (yabeda) Add sentry-yabeda adapter gem by @dingsdax in #2925

    There's a new sentry-yabeda gem that integrates Sentry Metrics with Yabeda.
    Add the new gem to your Gemfile:

    gem "sentry-yabeda"

    Initialize Sentry with metrics enabled. The Yabeda adapter registers itself automatically when sentry-yabeda is required — there's no extra setup:

    Sentry.init do |config|
      config.dsn = ENV["SENTRY_DSN"]
      config.enable_metrics = true
    end
  • Add release detection from Kamal deployment by @t27duck in #2895

Bug Fixes 🐛

  • (sidekiq) Report error when retry limit is below attempt_threshold by @marcboquet in #2940
  • (specs) Stop sidekiq-scheduler after each test by @solnic in #2897
  • (stacktrace) Stop leaking internal frame state into event payload by @sl0thentr0py in #2962
  • (tests) Proper dummy transport clean up for hub cloning by @solnic in #2957
  • (yabeda) Normalize plural Yabeda units to Sentry's singular form by @sentry-junior in #2953
  • Do not overwrite baggage header contents if it already exists by @jakubsomonday in #2896

Internal Changes 🔧

We made some memory performance and caching improvements with the help of pi-autoresearch. Enjoy the lower overhead!

  • Use FilenameCache in profilers by @sl0thentr0py in #2919
  • Add FilenameCache to cache compute_filename results by @HazAT in #2904
  • Optimize LineCache to reduce allocations by @HazAT in #2903
  • Avoid unnecessary allocations in hot paths by @HazAT in #2902
  • Optimize lowercase check in RequestInterface by @HazAT in #2908

6.5.0

16 Mar 14:18

Choose a tag to compare

New Features ✨

Bug Fixes 🐛

Internal Changes 🔧

6.4.1

02 Mar 12:56

Choose a tag to compare

Bug Fixes 🐛

  • (rails) Track request queue time in Rails middleware by @dingsdax in #2877

6.4.0

25 Feb 12:11

Choose a tag to compare

Features

  • Add support for OTLP ingestion in sentry-opentelemetry (#2853)

    Sentry now has first class OTLP ingestion capabilities.

    Sentry.init do |config|
      ## ...
      config.otlp.enabled = true
    end

    Under the hood, this will setup:

    • An OpenTelemetry::Exporter that will automatically set up the OTLP ingestion endpoint from your DSN
      • You can turn this off with config.otlp.setup_otlp_traces_exporter = false to setup your own exporter
    • An OTLPPropagator that ensures Distributed Tracing works
      • You can turn this off with config.otlp.setup_propagator = false
    • Trace/Span linking for all other Sentry events such as Errors, Logs, Crons and Metrics

    If you were using the SpanProcessor before, we recommend migrating over to config.otlp since it's a much simpler setup.

  • Treat Sidekiq nil retry as true (#2864)

  • Queue time capture for Rack (#2838)

Bug Fixes

  • Fix MetricEvent timestamp serialization to float (#2862)
  • Fix CGI imports for ruby 4.x (#2863)
  • Always include scope user data in telemetry (#2866)

6.3.1

11 Feb 15:55

Choose a tag to compare

Bug Fixes

  • Use ActionDispatch::ExceptionWrapper for correct HTTP status code (#2850)
  • Add explicit dependency on logger gem to fix Ruby 4.0 warning (#2837)

Internal

  • Add external_propagation_context support (#2841)

6.3.0

15 Jan 09:36

Choose a tag to compare

Features

  • Implement new Sentry.metrics functionality (#2818)

    The SDK now supports Sentry's new Trace Connected Metrics product.

     Sentry.metrics.count("button.click", 1, attributes: { button_id: "submit" })
     Sentry.metrics.distribution("response.time", 120.5, unit: "millisecond")
     Sentry.metrics.gauge("cpu.usage", 75.2, unit: "percent")

    Metrics is enabled by default and only activates once you use the above APIs. To disable completely:

    Sentry.init do |config|
      # ...
      config.enable_metrics = false
    end
  • Support for tracing Sequel queries (#2814)

    require "sentry"
    require "sentry/sequel"
    
    Sentry.init do |config|
      config.enabled_patches << :sequel
    end
    
    DB = Sequel.sqlite
    DB.extension(:sentry)
  • Add support for OpenTelemetry messaging/queue system spans (#2685)

  • Add support for config.std_lib_logger_filter proc (#2829)

    Sentry.init do |config|
      config.std_lib_logger_filter = proc do |logger, message, severity|
        # Only send ERROR and above messages
        severity == :error || severity == :fatal
      end
    
      config.enabled_patches = [:std_lib_logger]
    end

Bug Fixes

  • Handle empty frames case gracefully with local vars (#2807)
  • Handle more extra attribute types when using extra attributes for structured logging (#2815)
    # This now works too and the nested hash is dumped to JSON string
    Sentry.logger.info("Hello World", extra: { today: Date.today, user_id: user.id })
  • Prevent SDK crash when SDK logging fails (#2817)

Internal

  • Unify Logs and Metrics implementations (#2826)
  • Unify LogEventBuffer and MetricEventBuffer logic (#2830)
  • Add maximum limits on LogEventBuffer (1k) and MetricEventBuffer (10k) for protection from memory blowup (#2831)
  • Lazily start LogEventBuffer and MetricEventBuffer threads (#2832)

6.2.0

27 Nov 14:55

Choose a tag to compare

Features

  • Include otel as custom sampling context (2683)

Fixes

  • Prevent logging from crashing main thread (2795)
  • Improve error handling in ActiveRecord subscriber (2798)

6.1.2

25 Nov 10:54

Choose a tag to compare

Fixes

  • Handle positioned binds in logging (#2787)
  • Handle cached queries with binds correctly when logging (#2789)

6.1.1

20 Nov 10:30

Choose a tag to compare

Improvements

  • Optimize getting query source location in ActiveRecord tracing - this makes tracing up to roughly 40-60% faster depending on the use cases (#2769)

Bug fixes

  • Properly skip silenced ActiveRecord::Base.logger's log entries in the ActiveRecord log subscriber (#2775)
  • Handle malformed utf-8 log messages and attributes (#2777 and #2780)
  • Fix initialized check in Sentry::Rails::CaptureExceptions (#2783)

6.1.0

04 Nov 12:56

Choose a tag to compare

Features

  • Add support for ActiveRecord binds in the log events (#2761)

Bug Fixes

  • Guard log subscribers with initialized check (#2765)