From 6c2693dc91240c29a4bdf618eb8a07357f494b99 Mon Sep 17 00:00:00 2001 From: Dan Fuller Date: Fri, 16 Oct 2026 15:41:10 -0700 Subject: [PATCH 1/6] docs(crons): Add Solid Queue setup for Ruby Co-Authored-By: Claude --- platform-includes/crons/setup/ruby.mdx | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/platform-includes/crons/setup/ruby.mdx b/platform-includes/crons/setup/ruby.mdx index b44f4ba480c33..495f09d6beadd 100644 --- a/platform-includes/crons/setup/ruby.mdx +++ b/platform-includes/crons/setup/ruby.mdx @@ -93,6 +93,41 @@ The monitor slug comes from the job's `name` option, or from the handler's class Sentry creates the monitor from `cron` jobs and from `every` jobs whose frequency is a whole number of minutes, hours, or days. `interval` jobs wait a fixed time after each run ends, so they don't have a fixed schedule. For those, and for cron lines Sentry can't read the same way (for example `L`, `#`, or sub-minute seconds), the SDK sends check-ins without a monitor config, and you need to create the monitor in Sentry with the same slug. The same applies when the job's time zone is an offset like `+05:30` rather than an IANA name like `Europe/Vienna`. One-off `in` and `at` jobs are not monitored, and jobs scheduled by `sidekiq-scheduler` are left to the `:sidekiq_scheduler` patch. +### Solid Queue + + + +The Solid Queue integration ships in the next release of `sentry-rails`. + + + +If you're using Solid Queue recurring tasks, enable the `:solid_queue_recurring` patch to capture check-ins for every task in `config/recurring.yml`, as well as dynamic tasks: + +```rb +Sentry.init do |config| + config.enabled_patches << :solid_queue_recurring +end +``` + +```yaml {filename:config/recurring.yml} +production: + nightly_report: + class: ReportJob + args: [nightly] + schedule: "0 2 * * * America/New_York" + weekly_report: + class: ReportJob + args: [weekly] + schedule: every monday at 9am + clear_cache: + command: "Rails.cache.clear" + schedule: every hour +``` + +The monitor slug is the task key, so this example creates three monitors: `nightly_report`, `weekly_report`, and `clear_cache`. Each task gets its own monitor, even when tasks share a job class. Both `class` and `command` tasks are monitored. + +Sentry creates and updates each monitor from the task's schedule and time zone. Schedules that can't be expressed in the Crons schedule format, such as a task that runs every 10 seconds, still send check-ins, but without a monitor config. Create those monitors in Sentry first, using the same slug. Jobs that already call `sentry_monitor_check_ins` are left as they are. + ## Manual Setup If you're using `Clockwork` or `Whenever`, you'll need to instrument your jobs From 8ece47e81886342d4fe5777f32f55fe9b1de18e1 Mon Sep 17 00:00:00 2001 From: Dan Fuller Date: Fri, 16 Oct 2026 16:05:49 -0700 Subject: [PATCH 2/6] docs(crons): Document excluding Solid Queue recurring tasks Co-Authored-By: Claude --- platform-includes/crons/setup/ruby.mdx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/platform-includes/crons/setup/ruby.mdx b/platform-includes/crons/setup/ruby.mdx index 495f09d6beadd..0a8116edbf760 100644 --- a/platform-includes/crons/setup/ruby.mdx +++ b/platform-includes/crons/setup/ruby.mdx @@ -128,6 +128,15 @@ The monitor slug is the task key, so this example creates three monitors: `night Sentry creates and updates each monitor from the task's schedule and time zone. Schedules that can't be expressed in the Crons schedule format, such as a task that runs every 10 seconds, still send check-ins, but without a monitor config. Create those monitors in Sentry first, using the same slug. Jobs that already call `sentry_monitor_check_ins` are left as they are. +To skip tasks, list their keys in `config.rails.solid_queue_exclude_recurring_tasks`. Strings match a task key exactly, and regular expressions are matched against it: + +```rb +Sentry.init do |config| + config.enabled_patches << :solid_queue_recurring + config.rails.solid_queue_exclude_recurring_tasks = ["clear_cache", /^tmp_/] +end +``` + ## Manual Setup If you're using `Clockwork` or `Whenever`, you'll need to instrument your jobs From a90c2ff64a5cba841c08d535136972355bf26f68 Mon Sep 17 00:00:00 2001 From: Dan Fuller Date: Fri, 16 Oct 2026 16:47:54 -0700 Subject: [PATCH 3/6] docs(crons): Use += for the Solid Queue enabled_patches examples Matches the other enabled_patches examples on the page. Co-Authored-By: Claude --- platform-includes/crons/setup/ruby.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform-includes/crons/setup/ruby.mdx b/platform-includes/crons/setup/ruby.mdx index 0a8116edbf760..86d4ab3bb65b3 100644 --- a/platform-includes/crons/setup/ruby.mdx +++ b/platform-includes/crons/setup/ruby.mdx @@ -105,7 +105,7 @@ If you're using Solid Queue recurring tasks, enable the `:solid_queue_recurring` ```rb Sentry.init do |config| - config.enabled_patches << :solid_queue_recurring + config.enabled_patches += [:solid_queue_recurring] end ``` @@ -132,7 +132,7 @@ To skip tasks, list their keys in `config.rails.solid_queue_exclude_recurring_ta ```rb Sentry.init do |config| - config.enabled_patches << :solid_queue_recurring + config.enabled_patches += [:solid_queue_recurring] config.rails.solid_queue_exclude_recurring_tasks = ["clear_cache", /^tmp_/] end ``` From 4edbaa905af021bbac4312963a78a74ff248decb Mon Sep 17 00:00:00 2001 From: Dan Fuller Date: Thu, 29 Oct 2026 11:11:19 -0700 Subject: [PATCH 4/6] fix(crons): Don't monitor Solid Queue tasks with unsupported schedules --- platform-includes/crons/setup/ruby.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform-includes/crons/setup/ruby.mdx b/platform-includes/crons/setup/ruby.mdx index cf3bae15b8c32..8de595b9d913f 100644 --- a/platform-includes/crons/setup/ruby.mdx +++ b/platform-includes/crons/setup/ruby.mdx @@ -126,7 +126,7 @@ production: The monitor slug is the task key, so this example creates three monitors: `nightly_report`, `weekly_report`, and `clear_cache`. Each task gets its own monitor, even when tasks share a job class. Both `class` and `command` tasks are monitored. -Sentry creates and updates each monitor from the task's schedule and time zone. Schedules that can't be expressed in the Crons schedule format, such as a task that runs every 10 seconds, still send check-ins, but without a monitor config. Create those monitors in Sentry first, using the same slug. Jobs that already call `sentry_monitor_check_ins` are left as they are. +Sentry creates and updates each monitor from the task's schedule and time zone. Tasks whose schedule can't be expressed in the Crons schedule format, such as a task that runs every 10 seconds, aren't monitored. Jobs that already call `sentry_monitor_check_ins` are left as they are. To skip tasks, list their keys in `config.rails.solid_queue_exclude_recurring_tasks`. Strings match a task key exactly, and regular expressions are matched against it: From 25154a7a58c8ce41180542a782ef0dfdc3c2d222 Mon Sep 17 00:00:00 2001 From: Dan Fuller Date: Thu, 29 Oct 2026 11:26:21 -0700 Subject: [PATCH 5/6] docs(ruby): Name the release for the crons integrations --- platform-includes/crons/setup/ruby.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform-includes/crons/setup/ruby.mdx b/platform-includes/crons/setup/ruby.mdx index 8de595b9d913f..c4335c04e3af2 100644 --- a/platform-includes/crons/setup/ruby.mdx +++ b/platform-includes/crons/setup/ruby.mdx @@ -60,7 +60,7 @@ sentry_monitor_check_ins monitor_config: Sentry::Cron::MonitorConfig.from_cronta -The rufus-scheduler integration ships in the next release of `sentry-ruby`. +The rufus-scheduler integration requires `sentry-ruby` 7.2.0 or later. @@ -97,7 +97,7 @@ Sentry creates the monitor from `cron` jobs and from `every` jobs whose frequenc -The Solid Queue integration ships in the next release of `sentry-rails`. +The Solid Queue integration requires `sentry-rails` 7.2.0 or later. From dec99fd520b773d9c677bfff31e708139f074e8a Mon Sep 17 00:00:00 2001 From: Dan Fuller Date: Fri, 30 Oct 2026 10:05:59 -0700 Subject: [PATCH 6/6] docs(crons): Remove merge conflict markers --- platform-includes/crons/setup/ruby.mdx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/platform-includes/crons/setup/ruby.mdx b/platform-includes/crons/setup/ruby.mdx index 7805f4a2eff1f..0ade051fc1a66 100644 --- a/platform-includes/crons/setup/ruby.mdx +++ b/platform-includes/crons/setup/ruby.mdx @@ -58,15 +58,6 @@ sentry_monitor_check_ins monitor_config: Sentry::Cron::MonitorConfig.from_cronta ### rufus-scheduler -<<<<<<< HEAD - - -The rufus-scheduler integration requires `sentry-ruby` 7.2.0 or later. - - - -======= ->>>>>>> danf/ruby-rufus-crons-docs If you're using `rufus-scheduler`, enable the `:rufus_scheduler` patch to capture check-ins for `cron` and `every` jobs: ```rb