Commit 4dcc2aa
perf(active_job): boot the dummy app once per spec group
The harness was calling make_basic_app in its around-each block,
which creates a fresh Rails::Application subclass and runs every
initializer on each example. With 98 AJ examples that overhead dwarfed
the actual test work — and worse, it left behind state (Sidekiq's
@config_blocks list, accumulated routes, lingering Rails::Application
subclasses) that made each subsequent make_basic_app a little
slower. Under Ruby 3.4 + Rails 8.1.3 the per-example time grew 3× over
the run, pushing the full sentry-rails CI past the 15-min timeout.
Hoist make_basic_app to before(:all) and replicate the per-example
bits of Sentry::Rails::Railtie's after_initialize hook in the around
block — re-init Sentry, re-activate tracing / structured logging,
re-register the AJ event handlers. The one-time extensions
(controller methods, streaming reporter, backtrace cleanup, etc.) were
already installed by the initial make_basic_app and persist for the
group.
Also memoize the SidekiqAdapter instance in the :sidekiq context.
Each SidekiqAdapter.new appended to Sidekiq's internal @config_blocks
list and added an on(:quiet) callback; creating a fresh adapter per
example was unnecessary global churn.
Result: spec/active_job goes from 33s → 0.8s, and the full
sentry-rails spec task (Ruby 3.4 + Rails 8.1.3) goes from 9:22 to
2:31 — well under the CI limit.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent e01fd1b commit 4dcc2aa
2 files changed
Lines changed: 53 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
20 | 36 | | |
21 | | - | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
22 | 66 | | |
23 | 67 | | |
24 | 68 | | |
| |||
Lines changed: 8 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
33 | 40 | | |
34 | | - | |
| 41 | + | |
35 | 42 | | |
36 | 43 | | |
37 | 44 | | |
| |||
0 commit comments