solid_queue_guard 1.0.3 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11a78a97bc9a99f61525c331378d61e8f91a8ad7e6bac47f6859e04dfff73849
4
- data.tar.gz: c0ec9212f10030a126633666e7598b186d0f883a178e73006c1d2b47a2b2e37d
3
+ metadata.gz: 03e014c2d165420dbdda8f48bfd2393f6e9286eaa803f7df38152dac914bd8a7
4
+ data.tar.gz: 3f4d836158986782d127a0dc4c625fa590ae8a774f288e3754c839e3eb283de3
5
5
  SHA512:
6
- metadata.gz: db49e98e2610d545777391c5103309537da7401843a50c9d58cb8a271be31f7fc139b1e6a93089327f51252ef00d7994e3d1a3f5e0007a95b92cb4483706f95b
7
- data.tar.gz: 9a82743e3029c0b941e7ace14ea47574637c659aef6f4c0abb4b2689d9cc1992de688cd5f2773c5e259745f5ce29087e96382e052db55f02decba59ee09c9259
6
+ metadata.gz: d61efc62c5d274662619549dd25c47a5e714731385d33e1b460e0a7d878855f8454b78dc2ff56c02357bb216164b98b5bf5b475d88f5c8f6106d5cbd1172a7bc
7
+ data.tar.gz: 8c119f0d0f0825bffd66389dba8a6424f378cf62e1fd0ba5dba2e46ca3baee29eb6f85d23fda48a4f738b11845b01bde167733a02e9807802227ac8bb87b3ebe
data/CHANGELOG.md CHANGED
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.3] - 2026-07-09
9
+
10
+ ### Fixed
11
+
12
+ - Mission Control integration now reads `integrate_mission_control` in `after_initialize`, so setting it in `config/initializers/solid_queue_guard.rb` works without duplicating the flag in `config/application.rb`
13
+
14
+ ## [1.1.2] - 2026-07-09
15
+
16
+ ### Fixed
17
+
18
+ - RuboCop Style/ClassAndModuleChildren offense in test helper
19
+
20
+ ## [1.1.1] - 2026-07-09
21
+
22
+ ### Fixed
23
+
24
+ - Rails 7.1 CI: keep `:solid_queue` adapter in integration tests instead of ActiveJob's default `TestAdapter`, so Mission Control navigation renders on the Guard dashboard
25
+
26
+ ## [1.1.0] - 2026-07-09
27
+
28
+ ### Added
29
+
30
+ - Opt-in Mission Control — Jobs integration via `config.integrate_mission_control`
31
+ - **Guard** tab at `/jobs/guard` with Bulma UI matching Mission Control (status, metrics, warnings, suggestions, checks table)
32
+ - Reuses Mission Control authentication and layout; `/solid_queue_guard/health` JSON endpoint unchanged for load balancers
33
+
8
34
  ## [1.0.3] - 2026-07-09
9
35
 
10
36
  ### Fixed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- solid_queue_guard (1.0.3)
4
+ solid_queue_guard (1.1.3)
5
5
  actionpack (>= 7.1, < 9.0)
6
6
  activejob (>= 7.1, < 9.0)
7
7
  activerecord (>= 7.1, < 9.0)
@@ -113,6 +113,10 @@ GEM
113
113
  activesupport (>= 6.1)
114
114
  i18n (1.15.2)
115
115
  concurrent-ruby (~> 1.0)
116
+ importmap-rails (2.2.3)
117
+ actionpack (>= 6.0.0)
118
+ activesupport (>= 6.0.0)
119
+ railties (>= 6.0.0)
116
120
  io-console (0.8.2)
117
121
  irb (1.18.0)
118
122
  pp (>= 0.6.0)
@@ -135,6 +139,16 @@ GEM
135
139
  marcel (1.2.1)
136
140
  mini_mime (1.1.5)
137
141
  minitest (5.27.0)
142
+ mission_control-jobs (1.1.0)
143
+ actioncable (>= 7.1)
144
+ actionpack (>= 7.1)
145
+ activejob (>= 7.1)
146
+ activerecord (>= 7.1)
147
+ importmap-rails (>= 1.2.1)
148
+ irb (~> 1.13)
149
+ railties (>= 7.1)
150
+ stimulus-rails
151
+ turbo-rails
138
152
  mocha (3.1.0)
139
153
  ruby2_keywords (>= 0.0.5)
140
154
  net-imap (0.6.4.1)
@@ -171,6 +185,10 @@ GEM
171
185
  prettyprint
172
186
  prettyprint (0.2.0)
173
187
  prism (1.9.0)
188
+ propshaft (1.3.2)
189
+ actionpack (>= 7.0.0)
190
+ activesupport (>= 7.0.0)
191
+ rack
174
192
  puma (8.0.2)
175
193
  nio4r (~> 2.0)
176
194
  raabro (1.4.0)
@@ -265,9 +283,14 @@ GEM
265
283
  sqlite3 (2.9.5-x86_64-darwin)
266
284
  sqlite3 (2.9.5-x86_64-linux-gnu)
267
285
  sqlite3 (2.9.5-x86_64-linux-musl)
286
+ stimulus-rails (1.3.4)
287
+ railties (>= 6.0.0)
268
288
  thor (1.5.0)
269
289
  timeout (0.6.1)
270
290
  tsort (0.2.0)
291
+ turbo-rails (2.0.23)
292
+ actionpack (>= 7.1.0)
293
+ railties (>= 7.1.0)
271
294
  tzinfo (2.0.6)
272
295
  concurrent-ruby (~> 1.0)
273
296
  unicode-display_width (3.2.0)
@@ -295,8 +318,10 @@ DEPENDENCIES
295
318
  appraisal (~> 2.5)
296
319
  debug
297
320
  minitest (~> 5.0)
321
+ mission_control-jobs (>= 1.0)
298
322
  mocha (>= 2.1)
299
323
  parallel (~> 1.26)
324
+ propshaft (>= 1.0)
300
325
  puma (>= 6.0)
301
326
  rails (>= 7.1, < 9.0)
302
327
  rubocop (~> 1.75)
data/README.md CHANGED
@@ -176,17 +176,52 @@ config.unhealthy_http_status = 503 # default
176
176
 
177
177
  Works with **Kamal**, **Heroku**, **Fly.io**, **ECS/Fargate**, **Kubernetes**, **Better Stack**, **UptimeRobot**.
178
178
 
179
+ ### Mission Control dashboard (opt-in)
180
+
181
+ Add a **Guard** tab to [Mission Control — Jobs](https://github.com/rails/mission_control-jobs) — same Bulma UI, same auth, same navigation:
182
+
183
+ ```ruby
184
+ # Gemfile
185
+ gem "mission_control-jobs"
186
+ gem "solid_queue_guard"
187
+
188
+ # config/initializers/solid_queue_guard.rb
189
+ SolidQueueGuard.configure do |config|
190
+ config.integrate_mission_control = true
191
+ end
192
+
193
+ # config/routes.rb
194
+ mount MissionControl::Jobs::Engine, at: "/jobs"
195
+ mount SolidQueueGuard::Engine, at: "/solid_queue_guard" # keep /health for probes
196
+ ```
197
+
198
+ Open `/jobs/guard` (or click the **Guard** tab inside Mission Control). The page shows:
199
+
200
+ | Section | Content |
201
+ | ------- | ------- |
202
+ | **Overall status** | `healthy` / `degraded` / `unhealthy` badge |
203
+ | **Metrics** | Queue lag, failed jobs (1h), dead processes, check count |
204
+ | **Warnings & suggestions** | Same messages as `doctor` / `/health` |
205
+ | **Checks table** | Every check with status tag, message, and suggestion |
206
+
207
+ **Authentication:** the Guard tab inherits Mission Control auth — HTTP basic (default) or your admin controller via `MissionControl::Jobs.base_controller_class`. No separate login.
208
+
209
+ **Load balancers:** keep using `GET /solid_queue_guard/health` with optional `health_token`. Probes do not go through Mission Control.
210
+
211
+ **Requirements:** an asset pipeline (Propshaft or Sprockets), same as Mission Control. `mission_control-jobs` is optional — only needed when `integrate_mission_control` is enabled.
212
+
179
213
  ---
180
214
 
181
215
  ## How to use it
182
216
 
183
- Solid Queue does not show up in Rails `/up`. **solid_queue_guard** gives you three operational surfaces:
217
+ Solid Queue does not show up in Rails `/up`. **solid_queue_guard** gives you four operational surfaces:
184
218
 
185
219
  | Surface | Command / URL | Best for |
186
220
  | ------- | ------------- | -------- |
187
221
  | **Doctor** | `bin/rails solid_queue_guard:doctor` | Local pre-deploy, config review |
188
222
  | **CI gate** | `SOLID_QUEUE_GUARD_STRICT=1 bin/rails solid_queue_guard:doctor` | Block merges with broken queue config |
189
223
  | **HTTP health** | `GET /solid_queue_guard/health` | Production uptime monitors (Kamal, ECS, UptimeRobot) |
224
+ | **Guard tab** | `GET /jobs/guard` (with `integrate_mission_control`) | Human-readable checks inside Mission Control |
190
225
 
191
226
  **Mission Control** shows what is happening. **solid_queue_guard** warns what is dangerous. Use both.
192
227
 
@@ -352,6 +387,7 @@ SolidQueueGuard.configure do |config|
352
387
 
353
388
  # config.health_token = ENV["SOLID_QUEUE_GUARD_TOKEN"]
354
389
  # config.integrate_rails_health = true
390
+ # config.integrate_mission_control = true # Guard tab in Mission Control (requires mission_control-jobs)
355
391
  # config.notify_with = [:rails_logger, :slack, :datadog, :webhook]
356
392
  # config.metrics_backends = [:statsd, :prometheus, :opentelemetry]
357
393
  end
@@ -374,8 +410,10 @@ The following surface is **stable** until `2.0` and follows [semantic versioning
374
410
  | `solid_queue_guard:install` | Initializer generator |
375
411
  | `solid_queue_guard:install:ci` | GitHub Actions workflow generator |
376
412
  | `mount SolidQueueGuard::Engine` | HTTP health endpoint |
413
+ | `config.integrate_mission_control` | Guard tab in Mission Control (opt-in, requires `mission_control-jobs`) |
414
+ | `GET /jobs/guard` | Human-readable health dashboard (when integration enabled) |
377
415
 
378
- Configuration attributes, rake tasks, and health JSON shape are public. Internal check classes and registry are `@api private`.
416
+ Configuration attributes, rake tasks, health JSON shape, and Mission Control integration are public. Internal check classes and registry are `@api private`.
379
417
 
380
418
  Breaking changes ship only in major versions (`2.0+`). Deprecations warn one minor version ahead.
381
419
 
@@ -386,7 +424,7 @@ Breaking changes ship only in major versions (`2.0+`). Deprecations warn one min
386
424
  | | [Mission Control — Jobs](https://github.com/rails/mission_control-jobs) | solid_queue_guard |
387
425
  | --- | --- | --- |
388
426
  | **Purpose** | Inspect & manage jobs | Detect production risk |
389
- | **UI** | Dashboard | CLI + JSON + health endpoint |
427
+ | **UI** | Dashboard | CLI + JSON + health endpoint + optional Guard tab in Mission Control |
390
428
  | **Retry / discard** | Yes | No (use Mission Control) |
391
429
  | **Config doctor** | No | Yes |
392
430
  | **Queue lag alerts** | No | Yes |
@@ -410,6 +448,7 @@ Breaking changes ship only in major versions (`2.0+`). Deprecations warn one min
410
448
  | **v0.7** | Puma plugin runtime check, async supervisor awareness | ✅ Released |
411
449
  | **v0.8** | HTTP status policy, `install:ci` generator | ✅ Released |
412
450
  | **v1.0** | Stable public API, strict semver | ✅ Released |
451
+ | **v1.1** | Mission Control Guard tab (opt-in) | ✅ Released |
413
452
 
414
453
  ---
415
454
 
@@ -417,6 +456,7 @@ Breaking changes ship only in major versions (`2.0+`). Deprecations warn one min
417
456
 
418
457
  | Gem version | Ruby | Rails |
419
458
  | ----------- | ---- | ----- |
459
+ | 1.1.x | 3.1+ | 7.1, 7.2, 8.0 |
420
460
  | 1.0.x | 3.1+ | 7.1, 7.2, 8.0 |
421
461
  | 0.5.x | 3.1+ | 7.1, 7.2, 8.0 |
422
462
  | 0.1.x | 3.1+ | 7.1, 7.2, 8.0 |
@@ -426,6 +466,7 @@ Breaking changes ship only in major versions (`2.0+`). Deprecations warn one min
426
466
  - Ruby >= 3.1
427
467
  - Rails >= 7.1, < 9.0
428
468
  - [solid_queue](https://github.com/rails/solid_queue) >= 1.0, < 2.0
469
+ - [mission_control-jobs](https://github.com/rails/mission_control-jobs) >= 1.0 — optional, only for `integrate_mission_control`
429
470
 
430
471
  ---
431
472
 
@@ -442,7 +483,15 @@ bundle exec appraisal install
442
483
  bundle exec appraisal rake test
443
484
  ```
444
485
 
445
- Release a new version by pushing a `v*` tag after CI passes (Trusted Publishing on RubyGems).
486
+ Release a new version after CI passes:
487
+
488
+ ```bash
489
+ # Tag must match lib/solid_queue_guard/version.rb (currently 1.1.3)
490
+ git tag v1.1.3
491
+ git push origin v1.1.3
492
+ ```
493
+
494
+ Trusted Publishing on RubyGems publishes automatically when the tag is pushed.
446
495
 
447
496
  ---
448
497
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidQueueGuard
4
+ module MissionControl
5
+ class BaseController < ::MissionControl::Jobs::ApplicationController
6
+ helper DashboardHelper
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidQueueGuard
4
+ module MissionControl
5
+ class DashboardController < BaseController
6
+ def show
7
+ @payload = Health::Cache.fetch
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidQueueGuard
4
+ module MissionControl
5
+ module DashboardHelper
6
+ def guard_modifier_for_status(status)
7
+ case status.to_s
8
+ when 'healthy', 'pass' then 'is-success'
9
+ when 'degraded', 'warn' then 'is-warning'
10
+ when 'unhealthy', 'fail' then 'is-danger'
11
+ else 'is-light'
12
+ end
13
+ end
14
+
15
+ def guard_status_tag(status, label: nil)
16
+ tag.span(label || status.to_s.titleize, class: "tag #{guard_modifier_for_status(status)}")
17
+ end
18
+
19
+ def guard_check_label(check)
20
+ check[:id].to_s.tr('_', ' ').titleize
21
+ end
22
+
23
+ def guard_metric_value(value)
24
+ value.nil? ? '—' : value
25
+ end
26
+
27
+ def guard_format_duration(seconds)
28
+ return '—' if seconds.nil?
29
+
30
+ distance_of_time_in_words(0, seconds.to_i, include_seconds: true)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,6 @@
1
+ <tr class="guard-check">
2
+ <td><%= guard_check_label(check) %></td>
3
+ <td><%= guard_status_tag(check[:status]) %></td>
4
+ <td><%= check[:message] %></td>
5
+ <td class="has-text-grey"><%= check[:suggestion].presence || "—" %></td>
6
+ </tr>
@@ -0,0 +1,29 @@
1
+ <div class="columns is-multiline">
2
+ <div class="column is-one-quarter">
3
+ <div class="box has-text-centered">
4
+ <p class="heading">Queue lag</p>
5
+ <p class="title is-5"><%= guard_format_duration(payload[:queue_lag_seconds]) %></p>
6
+ </div>
7
+ </div>
8
+
9
+ <div class="column is-one-quarter">
10
+ <div class="box has-text-centered">
11
+ <p class="heading">Failed jobs (1h)</p>
12
+ <p class="title is-5"><%= guard_metric_value(payload[:failed_jobs_last_hour]) %></p>
13
+ </div>
14
+ </div>
15
+
16
+ <div class="column is-one-quarter">
17
+ <div class="box has-text-centered">
18
+ <p class="heading">Dead processes</p>
19
+ <p class="title is-5"><%= guard_metric_value(payload[:dead_processes]) %></p>
20
+ </div>
21
+ </div>
22
+
23
+ <div class="column is-one-quarter">
24
+ <div class="box has-text-centered">
25
+ <p class="heading">Checks</p>
26
+ <p class="title is-5"><%= payload[:checks].size %></p>
27
+ </div>
28
+ </div>
29
+ </div>
@@ -0,0 +1,75 @@
1
+ <% navigation(title: "Guard", section: :guard) %>
2
+
3
+ <div class="level mb-5">
4
+ <div class="level-left">
5
+ <div class="level-item">
6
+ <h2 class="title is-4 mb-0">
7
+ Overall status
8
+ <%= guard_status_tag(@payload[:status]) %>
9
+ </h2>
10
+ </div>
11
+ </div>
12
+ </div>
13
+
14
+ <%= render "solid_queue_guard/mission_control/dashboard/summary_metrics", payload: @payload %>
15
+
16
+ <% if @payload[:warnings].present? %>
17
+ <article class="message is-warning mt-5">
18
+ <div class="message-header">
19
+ <p>Warnings</p>
20
+ </div>
21
+ <div class="message-body">
22
+ <ul>
23
+ <% @payload[:warnings].each do |warning| %>
24
+ <li><%= warning %></li>
25
+ <% end %>
26
+ </ul>
27
+ </div>
28
+ </article>
29
+ <% end %>
30
+
31
+ <% if @payload[:suggestions].present? %>
32
+ <article class="message is-info mt-5">
33
+ <div class="message-header">
34
+ <p>Suggested fixes</p>
35
+ </div>
36
+ <div class="message-body">
37
+ <ul>
38
+ <% @payload[:suggestions].each do |suggestion| %>
39
+ <li><%= suggestion %></li>
40
+ <% end %>
41
+ </ul>
42
+ </div>
43
+ </article>
44
+ <% end %>
45
+
46
+ <% if @payload[:recommendations].present? %>
47
+ <article class="message is-link mt-5">
48
+ <div class="message-header">
49
+ <p>Topology recommendations</p>
50
+ </div>
51
+ <div class="message-body">
52
+ <ul>
53
+ <% @payload[:recommendations].each do |recommendation| %>
54
+ <li><%= recommendation %></li>
55
+ <% end %>
56
+ </ul>
57
+ </div>
58
+ </article>
59
+ <% end %>
60
+
61
+ <table class="guard-checks table is-hoverable is-fullwidth mt-5">
62
+ <thead>
63
+ <tr>
64
+ <th>Check</th>
65
+ <th>Status</th>
66
+ <th>Message</th>
67
+ <th>Suggestion</th>
68
+ </tr>
69
+ </thead>
70
+ <tbody>
71
+ <%= render partial: "solid_queue_guard/mission_control/dashboard/check",
72
+ collection: @payload[:checks],
73
+ as: :check %>
74
+ </tbody>
75
+ </table>
@@ -22,6 +22,7 @@ SolidQueueGuard.configure do |config|
22
22
 
23
23
  # config.health_token = ENV["SOLID_QUEUE_GUARD_TOKEN"]
24
24
  # config.integrate_rails_health = true
25
+ # config.integrate_mission_control = true
25
26
  # config.notify_with = [:rails_logger, :slack, :datadog, :webhook]
26
27
  # config.metrics_backends = [:statsd, :prometheus, :opentelemetry]
27
28
  end
@@ -11,6 +11,7 @@ module SolidQueueGuard
11
11
  :health_cache_ttl,
12
12
  :scheduled_backlog_threshold,
13
13
  :integrate_rails_health,
14
+ :integrate_mission_control,
14
15
  :notify_with,
15
16
  :metrics_backends,
16
17
  :disabled_checks,
@@ -28,6 +29,7 @@ module SolidQueueGuard
28
29
  @health_cache_ttl = 15.seconds
29
30
  @scheduled_backlog_threshold = 100
30
31
  @integrate_rails_health = false
32
+ @integrate_mission_control = false
31
33
  @notify_with = [:rails_logger]
32
34
  @metrics_backends = []
33
35
  @disabled_checks = []
@@ -29,5 +29,26 @@ module SolidQueueGuard
29
29
  end
30
30
  end
31
31
  end
32
+
33
+ initializer 'solid_queue_guard.mission_control' do
34
+ config.after_initialize do
35
+ next unless SolidQueueGuard.config.integrate_mission_control
36
+
37
+ if defined?(::MissionControl::Jobs)
38
+ SolidQueueGuard::MissionControl::Integration.install!
39
+ else
40
+ Rails.logger.warn(
41
+ '[solid_queue_guard] integrate_mission_control is enabled but mission_control-jobs is not loaded'
42
+ )
43
+ end
44
+ end
45
+
46
+ config.to_prepare do
47
+ next unless SolidQueueGuard.config.integrate_mission_control
48
+ next unless defined?(::MissionControl::Jobs)
49
+
50
+ SolidQueueGuard::MissionControl::Integration.install_navigation!
51
+ end
52
+ end
32
53
  end
33
54
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidQueueGuard
4
+ module MissionControl
5
+ class Integration
6
+ class << self
7
+ def install!
8
+ install_routes!
9
+ install_navigation!
10
+ end
11
+
12
+ def install_routes!
13
+ return if routes_installed?
14
+
15
+ ::MissionControl::Jobs::Engine.routes.append do
16
+ get 'guard',
17
+ controller: '/solid_queue_guard/mission_control/dashboard',
18
+ action: 'show',
19
+ as: :solid_queue_guard_dashboard
20
+ end
21
+ end
22
+
23
+ def install_navigation!
24
+ return unless defined?(::MissionControl::Jobs::NavigationHelper)
25
+ return if navigation_installed?
26
+
27
+ ::MissionControl::Jobs::NavigationHelper.prepend(NavigationExtension)
28
+ end
29
+
30
+ private
31
+
32
+ def routes_installed?
33
+ ::MissionControl::Jobs::Engine.routes.routes.any? do |route|
34
+ route.name == 'solid_queue_guard_dashboard'
35
+ end
36
+ end
37
+
38
+ def navigation_installed?
39
+ ::MissionControl::Jobs::NavigationHelper.ancestors.include?(NavigationExtension)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidQueueGuard
4
+ module MissionControl
5
+ module NavigationExtension
6
+ def navigation_sections
7
+ super.tap do |sections|
8
+ sections[:guard] = ['Guard', guard_dashboard_path]
9
+ end
10
+ end
11
+
12
+ private
13
+
14
+ def guard_dashboard_path
15
+ ::MissionControl::Jobs::Engine.routes.url_helpers.solid_queue_guard_dashboard_path
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidQueueGuard
4
- VERSION = '1.0.3'
4
+ VERSION = '1.1.3'
5
5
  end
@@ -45,7 +45,9 @@ Gem::Specification.new do |spec|
45
45
  spec.add_development_dependency 'appraisal', '~> 2.5'
46
46
  spec.add_development_dependency 'debug'
47
47
  spec.add_development_dependency 'minitest', '~> 5.0'
48
+ spec.add_development_dependency 'mission_control-jobs', '>= 1.0'
48
49
  spec.add_development_dependency 'mocha', '>= 2.1'
50
+ spec.add_development_dependency 'propshaft', '>= 1.0'
49
51
  spec.add_development_dependency 'puma', '>= 6.0'
50
52
  spec.add_development_dependency 'rails', rails_version
51
53
  spec.add_development_dependency 'rubocop', '~> 1.75'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid_queue_guard
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Pissardo
@@ -171,6 +171,20 @@ dependencies:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
173
  version: '5.0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: mission_control-jobs
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '1.0'
181
+ type: :development
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '1.0'
174
188
  - !ruby/object:Gem::Dependency
175
189
  name: mocha
176
190
  requirement: !ruby/object:Gem::Requirement
@@ -185,6 +199,20 @@ dependencies:
185
199
  - - ">="
186
200
  - !ruby/object:Gem::Version
187
201
  version: '2.1'
202
+ - !ruby/object:Gem::Dependency
203
+ name: propshaft
204
+ requirement: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '1.0'
209
+ type: :development
210
+ prerelease: false
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '1.0'
188
216
  - !ruby/object:Gem::Dependency
189
217
  name: puma
190
218
  requirement: !ruby/object:Gem::Requirement
@@ -280,6 +308,12 @@ files:
280
308
  - Rakefile
281
309
  - app/controllers/solid_queue_guard/application_controller.rb
282
310
  - app/controllers/solid_queue_guard/health_controller.rb
311
+ - app/controllers/solid_queue_guard/mission_control/base_controller.rb
312
+ - app/controllers/solid_queue_guard/mission_control/dashboard_controller.rb
313
+ - app/helpers/solid_queue_guard/mission_control/dashboard_helper.rb
314
+ - app/views/solid_queue_guard/mission_control/dashboard/_check.html.erb
315
+ - app/views/solid_queue_guard/mission_control/dashboard/_summary_metrics.html.erb
316
+ - app/views/solid_queue_guard/mission_control/dashboard/show.html.erb
283
317
  - config/routes.rb
284
318
  - lib/generators/solid_queue_guard/install/USAGE
285
319
  - lib/generators/solid_queue_guard/install/USAGE.ci
@@ -330,6 +364,8 @@ files:
330
364
  - lib/solid_queue_guard/metrics/open_telemetry.rb
331
365
  - lib/solid_queue_guard/metrics/prometheus.rb
332
366
  - lib/solid_queue_guard/metrics/statsd.rb
367
+ - lib/solid_queue_guard/mission_control/integration.rb
368
+ - lib/solid_queue_guard/mission_control/navigation_extension.rb
333
369
  - lib/solid_queue_guard/notifier.rb
334
370
  - lib/solid_queue_guard/notifiers/base.rb
335
371
  - lib/solid_queue_guard/puma_plugin_support.rb