Releases: getsentry/sentry-ruby
5.18.0
Features
-
Add generator for initializer generation (#2286)
Rails users will be able to use
bin/rails generate sentry
to generate theirconfig/initializers/sentry.rb
file. -
Notify users when their custom options are discarded (#2303)
-
Add a new
:graphql
patch to automatically enable instrumenting GraphQL spans (#2308)Usage:
Sentry.init do |config| # ... config.enabled_patches += [:graphql] end
-
Add
Sentry.get_trace_propagation_meta
helper for injecting meta tags into views (#2314) -
Add query source support to
sentry-rails
(#2313)The feature is only activated in apps that use Ruby 3.2+ and Rails 7.1+. By default only queries that take longer than 100ms will have source recorded, which can be adjusted by updating the value of
config.rails.db_query_source_threshold_ms
. -
Log envelope delivery message with debug instead of info (#2320)
Bug Fixes
- Don't throw error on arbitrary arguments being passed to
capture_event
options #2301- Fixes #2299
- Decrease the default number of background worker threads by half (#2305)
- Fixes #2297
- Don't mutate
enabled_environments
when usingSentry::TestHelper
(#2317) - Don't use array for transaction names and sources on scope (#2324)
- Fixes #2257
- BREAKING This removes the internal
scope.transaction_names
method, please usescope.transaction_name
instead
Internal
- Add
origin
to spans and transactions to track integration sources for instrumentation (#2319)
5.17.3
5.17.2
5.17.1
5.17.0
Features
- Add support for distributed tracing in
sentry-delayed_job
#2233 - Fix warning about default gems on Ruby 3.3.0 (#2225)
- Add
hint:
support toSentry::Rails::ErrorSubscriber
#2235 - Add Metrics support
-
Add main APIs and
Aggregator
thread #2247 -
Add
Sentry::Metrics.timing
API for measuring block duration #2254 -
Add metric summaries on spans #2255
-
Add
config.metrics.before_emit
callback #2258 -
Add code locations for metrics #2263
The SDK now supports recording and aggregating metrics. A new thread will be started
for aggregation and will flush the pending data to Sentry every 5 seconds.To enable this behavior, use:
Sentry.init do |config| # ... config.metrics.enabled = true end
And then in your application code, collect metrics as follows:
# increment a simple counter Sentry::Metrics.increment('button_click') # set a value, unit and tags Sentry::Metrics.increment('time', 5, unit: 'second', tags: { browser:' firefox' }) # distribution - get statistical aggregates from an array of observations Sentry::Metrics.distribution('page_load', 15.0, unit: 'millisecond') # gauge - record statistical aggregates directly on the SDK, more space efficient Sentry::Metrics.gauge('page_load', 15.0, unit: 'millisecond') # set - get unique counts of elements Sentry::Metrics.set('user_view', 'jane') # timing - measure duration of code block, defaults to seconds # will also automatically create a `metric.timing` span Sentry::Metrics.timing('how_long') { sleep(1) } # timing - measure duration of code block in other duraton units Sentry::Metrics.timing('how_long_ms', unit: 'millisecond') { sleep(0.5) }
You can filter some keys or update tags on the fly with the
before_emit
callback, which will be triggered before a metric is aggregated.Sentry.init do |config| # ... # the 'foo' metric will be filtered and the tags will be updated to add :bar and remove :baz config.metrics.before_emit = lambda do |key, tags| return nil if key == 'foo' tags[:bar] = 42 tags.delete(:baz) true end end
By default, the SDK will send code locations for unique metrics (defined by type, key and unit) once a day and with every startup/shutdown of your application.
You can turn this off with the following:Sentry.init do |config| # ... config.metrics.enable_code_locations = false end
-
Bug Fixes
- Fix undefined method 'constantize' issue in
sentry-resque
(#2248) - Only instantiate SessionFlusher when the SDK is enabled under the current env #2245
- Fixes #2234
- Update backtrace parsing regexp to support Ruby 3.4 (#2252)
- Make sure
sending_allowed?
is respected irrespective of spotlight configuration (#2231)- Fixes #2226
5.16.1
5.16.0
Features
-
Add backpressure handling for transactions #2185
The SDK can now dynamically downsample transactions to reduce backpressure in high
throughput systems. It starts a newBackpressureMonitor
thread to perform some health checks
which decide to downsample (halved each time) in 10 second intervals till the system
is healthy again.To enable this behavior, use:
Sentry.init do |config| # ... config.traces_sample_rate = 1.0 config.enable_backpressure_handling = true end
If your system serves heavy load, please let us know how this feature works for you!
-
Implement proper flushing logic on
close
for Client Reports and Sessions #2206 -
Support cron with timezone for
sidekiq-scheduler
patch #2209- Fixes #2187
-
Add
Cron::Configuration
object that holds defaults for allMonitorConfig
objects #2211Sentry.init do |config| # ... config.cron.default_checkin_margin = 1 config.cron.default_max_runtime = 30 config.cron.default_timezone = 'America/New_York' end
-
Clean up logging #2216
-
Pick up config.cron.default_timezone from Rails config #2213
-
Don't add most scope data (tags/extra/breadcrumbs) to
CheckInEvent
#2217