solid_queue_guard 1.1.3 → 1.1.4

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: 03e014c2d165420dbdda8f48bfd2393f6e9286eaa803f7df38152dac914bd8a7
4
- data.tar.gz: 3f4d836158986782d127a0dc4c625fa590ae8a774f288e3754c839e3eb283de3
3
+ metadata.gz: 45e502d91550c641928112f20c22aa917b5c9b4e8c315730503aa6d5e2f10532
4
+ data.tar.gz: bff2f2dd6c6fce14ead0b7f43a97635c6184abb5c6585a07673fcf502771f2ab
5
5
  SHA512:
6
- metadata.gz: d61efc62c5d274662619549dd25c47a5e714731385d33e1b460e0a7d878855f8454b78dc2ff56c02357bb216164b98b5bf5b475d88f5c8f6106d5cbd1172a7bc
7
- data.tar.gz: 8c119f0d0f0825bffd66389dba8a6424f378cf62e1fd0ba5dba2e46ca3baee29eb6f85d23fda48a4f738b11845b01bde167733a02e9807802227ac8bb87b3ebe
6
+ metadata.gz: 942e9c4f60fe1eb30dd9a00fa4bb38e150c5fd964dac066429b1f805c448e470d12520da606218a4a163aa44f8cf52176f60b44de25a899e8e900530aee165d1
7
+ data.tar.gz: 539c14d133e1fa5d02d1407e3b951ca2565382f16a36dba34a895ee7ff44b5e7d0ee80165c0d91b0a2bf5c1ee50a3691429b1619f5a0f8e8949804378fec8526
data/CHANGELOG.md CHANGED
@@ -5,6 +5,12 @@ 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.4] - 2026-07-10
9
+
10
+ ### Fixed
11
+
12
+ - Mission Control Guard tab now uses application-scoped URLs (`/applications/:application_id/guard`) with the engine mount prefix and `server_id`, matching Queues, Workers, and Recurring tasks navigation
13
+
8
14
  ## [1.1.3] - 2026-07-09
9
15
 
10
16
  ### Fixed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- solid_queue_guard (1.1.3)
4
+ solid_queue_guard (1.1.4)
5
5
  actionpack (>= 7.1, < 9.0)
6
6
  activejob (>= 7.1, < 9.0)
7
7
  activerecord (>= 7.1, < 9.0)
data/README.md CHANGED
@@ -1,19 +1,63 @@
1
- # solid_queue_guard
1
+ <p align="center">
2
+ <img src="https://img.shields.io/gem/v/solid_queue_guard?style=for-the-badge" alt="Gem Version">
3
+ <img src="https://img.shields.io/badge/Ruby-3.1%2B-red?style=for-the-badge&logo=ruby" alt="Ruby 3.1+">
4
+ <img src="https://img.shields.io/badge/Rails-7.1–8.0-red?style=for-the-badge&logo=rubyonrails" alt="Rails 7.1–8.0">
5
+ <img src="https://img.shields.io/github/actions/workflow/status/rafael-pissardo/solid_queue_guard/ci.yml?branch=main&style=for-the-badge&label=CI" alt="CI">
6
+ <img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" alt="MIT License">
7
+ </p>
2
8
 
3
- **Production readiness checks and runtime guards for Rails Solid Queue.**
9
+ <h1 align="center">solid_queue_guard</h1>
4
10
 
5
- [![Gem Version](https://img.shields.io/gem/v/solid_queue_guard)](https://rubygems.org/gems/solid_queue_guard)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](MIT-LICENSE)
11
+ <p align="center">
12
+ <strong>Your Solid Queue production doctor.</strong><br>
13
+ Catch dead workers, queue lag, and broken config <em>before</em> the 3am page.
14
+ </p>
7
15
 
8
- Rails 8 ships with [Solid Queue](https://github.com/rails/solid_queue). Redis is optional. Production config is not.
16
+ <p align="center">
17
+ <a href="#-quick-start"><strong>Quick start</strong></a> ·
18
+ <a href="#-see-it-in-action"><strong>Demo output</strong></a> ·
19
+ <a href="#-mission-control-dashboard-opt-in"><strong>Mission Control tab</strong></a> ·
20
+ <a href="#-solid_queue_guard-vs-mission-control"><strong>vs Mission Control</strong></a>
21
+ </p>
22
+
23
+ ---
24
+
25
+ Rails 8 ships with [Solid Queue](https://github.com/rails/solid_queue). Redis is optional. **Production config is not.**
9
26
 
10
27
  Your web tier can be **green** while your jobs are **dead**. Your queue can look **empty** while scheduled work is **stuck**. Your `queue.yml` can declare **10 threads** against a database pool of **5**.
11
28
 
12
- **solid_queue_guard** catches that *before* it becomes a 3am incident.
29
+ **solid_queue_guard** catches that *before* it becomes an incident.
13
30
 
14
31
  > **Mission Control** shows what is happening.
15
32
  > **solid_queue_guard** warns what is dangerous.
16
33
 
34
+ ### Install in 30 seconds
35
+
36
+ ```bash
37
+ bundle add solid_queue_guard
38
+ bin/rails solid_queue_guard:install
39
+ bin/rails solid_queue_guard:doctor
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Table of contents
45
+
46
+ - [Why this exists](#why-this-exists)
47
+ - [See it in action](#-see-it-in-action)
48
+ - [What it checks](#what-it-checks)
49
+ - [Quick start](#-quick-start)
50
+ - [Mission Control dashboard](#-mission-control-dashboard-opt-in)
51
+ - [How to use it](#how-to-use-it)
52
+ - [Runtime process checks](#runtime-process-checks)
53
+ - [Configuration](#configuration)
54
+ - [Public API (v1.0+)](#public-api-v10)
55
+ - [solid_queue_guard vs Mission Control](#-solid_queue_guard-vs-mission-control)
56
+ - [Roadmap](#roadmap)
57
+ - [Compatibility](#compatibility)
58
+ - [Development](#development)
59
+ - [Contributing](#contributing)
60
+
17
61
  ---
18
62
 
19
63
  ## Why this exists
@@ -32,7 +76,7 @@ You don't need another dashboard. You need a **doctor**.
32
76
 
33
77
  ---
34
78
 
35
- ## See it in action
79
+ ## 👨‍⚕️ See it in action
36
80
 
37
81
  ```bash
38
82
  bundle add solid_queue_guard
@@ -61,7 +105,7 @@ Suggested fixes:
61
105
  - Verify scheduler process is running in production
62
106
  ```
63
107
 
64
- One command. Actionable output. No Datadog required to get started.
108
+ **One command. Actionable output. No Datadog required to get started.**
65
109
 
66
110
  ---
67
111
 
@@ -100,7 +144,7 @@ Runs locally, in CI, or pre-deploy. **No extra infrastructure.**
100
144
 
101
145
  ---
102
146
 
103
- ## Quick start
147
+ ## 🚀 Quick start
104
148
 
105
149
  ### Install
106
150
 
@@ -176,7 +220,9 @@ config.unhealthy_http_status = 503 # default
176
220
 
177
221
  Works with **Kamal**, **Heroku**, **Fly.io**, **ECS/Fargate**, **Kubernetes**, **Better Stack**, **UptimeRobot**.
178
222
 
179
- ### Mission Control dashboard (opt-in)
223
+ ---
224
+
225
+ ## 🛡️ Mission Control dashboard (opt-in)
180
226
 
181
227
  Add a **Guard** tab to [Mission Control — Jobs](https://github.com/rails/mission_control-jobs) — same Bulma UI, same auth, same navigation:
182
228
 
@@ -195,7 +241,9 @@ mount MissionControl::Jobs::Engine, at: "/jobs"
195
241
  mount SolidQueueGuard::Engine, at: "/solid_queue_guard" # keep /health for probes
196
242
  ```
197
243
 
198
- Open `/jobs/guard` (or click the **Guard** tab inside Mission Control). The page shows:
244
+ Open `/jobs/applications/:application_id/guard` (or click the **Guard** tab inside Mission Control):
245
+
246
+ ![Guard tab in Mission Control — overall status, metrics, warnings, and checks table](docs/mission-control-guard-dashboard.png)
199
247
 
200
248
  | Section | Content |
201
249
  | ------- | ------- |
@@ -221,7 +269,7 @@ Solid Queue does not show up in Rails `/up`. **solid_queue_guard** gives you fou
221
269
  | **Doctor** | `bin/rails solid_queue_guard:doctor` | Local pre-deploy, config review |
222
270
  | **CI gate** | `SOLID_QUEUE_GUARD_STRICT=1 bin/rails solid_queue_guard:doctor` | Block merges with broken queue config |
223
271
  | **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 |
272
+ | **Guard tab** | `GET /jobs/applications/:application_id/guard` (with `integrate_mission_control`) | Human-readable checks inside Mission Control |
225
273
 
226
274
  **Mission Control** shows what is happening. **solid_queue_guard** warns what is dangerous. Use both.
227
275
 
@@ -411,7 +459,7 @@ The following surface is **stable** until `2.0` and follows [semantic versioning
411
459
  | `solid_queue_guard:install:ci` | GitHub Actions workflow generator |
412
460
  | `mount SolidQueueGuard::Engine` | HTTP health endpoint |
413
461
  | `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) |
462
+ | `GET /jobs/applications/:application_id/guard` | Human-readable health dashboard (when integration enabled) |
415
463
 
416
464
  Configuration attributes, rake tasks, health JSON shape, and Mission Control integration are public. Internal check classes and registry are `@api private`.
417
465
 
@@ -419,7 +467,7 @@ Breaking changes ship only in major versions (`2.0+`). Deprecations warn one min
419
467
 
420
468
  ---
421
469
 
422
- ## solid_queue_guard vs Mission Control
470
+ ## ⚔️ solid_queue_guard vs Mission Control
423
471
 
424
472
  | | [Mission Control — Jobs](https://github.com/rails/mission_control-jobs) | solid_queue_guard |
425
473
  | --- | --- | --- |
@@ -486,9 +534,9 @@ bundle exec appraisal rake test
486
534
  Release a new version after CI passes:
487
535
 
488
536
  ```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
537
+ # Tag must match lib/solid_queue_guard/version.rb (currently 1.1.4)
538
+ git tag v1.1.4
539
+ git push origin v1.1.4
492
540
  ```
493
541
 
494
542
  Trusted Publishing on RubyGems publishes automatically when the tag is pushed.
@@ -13,10 +13,10 @@ module SolidQueueGuard
13
13
  return if routes_installed?
14
14
 
15
15
  ::MissionControl::Jobs::Engine.routes.append do
16
- get 'guard',
16
+ get 'applications/:application_id/guard',
17
17
  controller: '/solid_queue_guard/mission_control/dashboard',
18
18
  action: 'show',
19
- as: :solid_queue_guard_dashboard
19
+ as: :application_solid_queue_guard_dashboard
20
20
  end
21
21
  end
22
22
 
@@ -31,7 +31,7 @@ module SolidQueueGuard
31
31
 
32
32
  def routes_installed?
33
33
  ::MissionControl::Jobs::Engine.routes.routes.any? do |route|
34
- route.name == 'solid_queue_guard_dashboard'
34
+ route.name == 'application_solid_queue_guard_dashboard'
35
35
  end
36
36
  end
37
37
 
@@ -12,7 +12,7 @@ module SolidQueueGuard
12
12
  private
13
13
 
14
14
  def guard_dashboard_path
15
- ::MissionControl::Jobs::Engine.routes.url_helpers.solid_queue_guard_dashboard_path
15
+ application_solid_queue_guard_dashboard_path(@application)
16
16
  end
17
17
  end
18
18
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidQueueGuard
4
- VERSION = '1.1.3'
4
+ VERSION = '1.1.4'
5
5
  end
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.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Pissardo