Skip to content

Releases: getsentry/sentry-ruby

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)

6.0.0

22 Oct 10:19

Choose a tag to compare

Breaking Changes

  • Drop support for rubies below 2.7 #2743
    • Drop support for Rails below 5.2.0
    • Drop support for Sidekiq below 5.0
  • Remove deprecated config.async #1894
  • Remove deprecated Sentry::Metrics and config.metrics and all metrics related code (#2729)
  • Remove deprecated config.capture_exception_frame_locals, use include_local_variables instead (#2730)
  • Remove deprecated config.enable_tracing, use config.traces_sample_rate = 1.0 instead (#2731)
  • Remove deprecated config.logger=, use config.sdk_logger= instead (#2732)
  • Sentry.logger now always points to the StructuredLogger (#2752)
  • Remove deprecated Sentry::Rails::Tracing::ActionControllerSubscriber (#2733)
  • Remove deprecated Event#configuration (#2740)
  • Remove deprecated Sentry::Client#generate_sentry_trace and Sentry::Client#generate_baggage (#2741)
  • Remove Transaction deprecations (#2736)
    • Remove deprecated constant Sentry::Transaction::SENTRY_TRACE_REGEXP, use Sentry::PropagationContext::SENTRY_TRACE_REGEXP instead
    • Remove deprecated method Sentry::Transaction.from_sentry_trace, use Sentry.continue_trace instead
    • Remove deprecated method Sentry::Transaction.extract_sentry_trace, use Sentry::PropagationContext.extract_sentry_trace instead
    • Remove deprecated attribute Sentry::Transaction.configuration
    • Remove deprecated attribute Sentry::Transaction.hub
    • Remove deprecated argument hub to Sentry::Transaction.finish
    • Remove deprecated argument hub to Sentry::Transaction#initialize (#2739)
  • Remove :monotonic_active_support_logger from config.breadcrumbs_logger (#2717)
  • Migrate from to_hash to to_h (#2351)
  • Add before_send_check_in for applying to CheckInEvent (#2703)
  • Returning a hash from before_send and before_send_transaction is no longer supported and will drop the event.
  • config.enabled_environments now defaults to nil instead of [] for sending to all environments (#2716)
  • Requests which have response status codes in the inclusive ranges [(301..303), (305..399), (401..404)] will no longer create transactions by default. See config.trace_ignore_status_codes below to control what gets traced.
  • Stacktrace truncation for oversized events now takes 500 frames on each side instead of 250.

Features

  • Add config.trace_ignore_status_codes to control which response codes to ignore for tracing (#2725)

    You can pass in an Array of individual status codes or ranges of status codes.

    Sentry.init do |config|
        # ...
        # will ignore 404, 501, 502, 503
        config.trace_ignore_status_codes = [404, (501..503)]
    end
  • Add config.profiles_sample_interval to control sampling frequency (#2745)

    • Both stackprof and vernier now get sampled at a default frequency of 101 Hz.
  • Request body reading checks for :rewind to match Rack 3 behavior. (#2754)

Internal

  • Archive sentry-raven (#2708)
  • Don't send sample_rate client reports for profiles if profiling is disabled (#2728)

5.28.1

21 Oct 12:56

Choose a tag to compare

Bug Fixes

  • The sentry.origin log event attribute is now correctly prefixed with auto.log (#2749)