sidekiq_queue_manager 1.1.0 → 1.1.1

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: d0b811d2bd12bbf0f5ed238d7e9a2f1a48ed6e7034313697cc7d3ea23c136840
4
- data.tar.gz: 127dbcf05fbafdde46f77fab0fb7d4306f560718b34f1b395b9e3d20df704410
3
+ metadata.gz: eef3dc6b819cf03669fde2b5d5ccd75d7a1e298f1d3c1e5d81b8505ff80e417f
4
+ data.tar.gz: 2a8c6d262806309608cec3a67ab0a142377654fcbf179f2d82c5b6afc957cf57
5
5
  SHA512:
6
- metadata.gz: dff9898513e4b040c8302ed81778e515d90ca401ff9c65eabac31c0caa03171398060e9d39c85a3448d84741f58b4ae1b89be2449e2374526d4a0b3eb70e8468
7
- data.tar.gz: 49831b2810880b5bd5813c73fc28af465b67f8d24550d030320eb2196b0da3f3c31ff5490436bc77e9178aecdd175de23de7b3d29075fbf02d8a6313556bc022
6
+ metadata.gz: 586476818da88f4add4f3ce87f9c6723117e1ae106fb5130febee6c3140759649e5d387f872af7708826753752f2db1d7b09dfa2d6878012a8035579b1b51593
7
+ data.tar.gz: c6e20b1619c17a975a5f98ecc727f8044037b1677493f51ee9840c32be3276a09f7b2ed9c07f5fd323a3e32b226be98ab00b434d38e70a62f96f0c135fd109b5
data/README.md CHANGED
@@ -6,28 +6,35 @@
6
6
  [![Sidekiq](https://img.shields.io/badge/Sidekiq-7.0%2B-orange.svg)](https://sidekiq.org)
7
7
  [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
8
8
 
9
- **Professional Sidekiq queue monitoring and management interface for Rails applications.**
9
+ **Complete Sidekiq management suite with tabbed interface for queues, scheduled jobs, retries, and dead jobs.**
10
10
 
11
- A modern, real-time web interface for monitoring and managing Sidekiq queues with zero configuration required. Perfect for production environments requiring professional queue monitoring capabilities.
11
+ A modern, real-time web interface for comprehensive Sidekiq management with zero configuration required. Features match and extend the official Sidekiq Web UI with enhanced filtering, smart number formatting, and professional design. Perfect for production environments requiring full-featured job management capabilities.
12
12
 
13
13
  ---
14
14
 
15
15
  ## ✨ Features
16
16
 
17
- ### 🚀 **Real-Time Queue Management**
17
+ ### 🚀 **Complete Sidekiq Management Suite**
18
18
 
19
- - **Live Statistics** - Real-time queue metrics with 5-second auto-refresh
19
+ - **Live Statistics** - Real-time queue metrics with smart number formatting (K, M, B, T)
20
20
  - **Universal Queue Discovery** - Automatically detects ALL Sidekiq queues
21
- - **Pause/Resume Operations** - Individual and bulk queue control
21
+ - **Tabbed Interface** - Organized views for Queues, Scheduled, Retries, and Dead jobs
22
+ - **Scheduled Jobs Management** - View, delete, enqueue, and bulk clear scheduled jobs
23
+ - **Retry Jobs Management** - Retry now, delete, kill, or bulk operations on failed jobs
24
+ - **Dead Jobs Management** - Resurrect, delete permanently, or bulk operations on dead jobs
22
25
  - **Advanced Queue Controls** - Set limits, block queues, manage process limits
23
- - **Job Management** - View, delete, and paginate through individual jobs
26
+ - **Job Management** - View, delete, and paginate through jobs with filtering
24
27
 
25
28
  ### 🎨 **Professional Interface**
26
29
 
27
- - **Modern UI/UX** - Dark-mode optimized responsive design
28
- - **Live Pull Toggle** - Enable/disable real-time updates
29
- - **Custom Modal System** - Professional confirmations and prompts
30
- - **Mobile Responsive** - Optimized for all device sizes
30
+ - **Modern Tabbed UI** - Organized interface with Queues, Scheduled, Retries, and Dead job views
31
+ - **Smart Number Display** - Large numbers automatically formatted (92.9M, 1.2B, 5T) to prevent overflow
32
+ - **Dark-mode Optimized** - Beautiful responsive design that works on all screen sizes
33
+ - **Live Pull Toggle** - Enable/disable real-time updates with visual indicators
34
+ - **Custom Modal System** - Professional confirmations and prompts (no browser alerts)
35
+ - **Advanced Filtering** - Filter jobs by class name across all tabs
36
+ - **Pagination** - Efficient browsing through large job sets
37
+ - **Mobile Responsive** - Optimized layouts for desktop, tablet, and mobile
31
38
  - **Accessibility Ready** - ARIA labels, keyboard navigation, screen reader support
32
39
 
33
40
  ### 🔒 **Enterprise Features**
@@ -149,10 +156,41 @@ end
149
156
 
150
157
  The main dashboard provides:
151
158
 
152
- - **Global Statistics** - Processed, failed, busy, and enqueued job counts
153
- - **Queue Summary** - Total queues, paused queues, and total jobs
154
- - **Live Controls** - Toggle real-time updates and manual refresh
155
- - **Queue Table** - Detailed view of all queues with actions
159
+ - **Enhanced Global Statistics** - Processed, failed, busy, enqueued, scheduled, retry, and dead job counts with smart formatting
160
+ - **Tabbed Interface** - Four main sections: Queues, Scheduled, Retries, and Dead jobs with real-time counts
161
+ - **Live Controls** - Toggle real-time updates and manual refresh with visual indicators
162
+ - **Advanced Filtering** - Filter jobs by class name across all tabs
163
+ - **Responsive Design** - Optimized layouts that prevent number overflow on all screen sizes
164
+
165
+ ### Job Management by Type
166
+
167
+ #### 📅 Scheduled Jobs Tab
168
+
169
+ - **View Scheduled Jobs** - Browse future jobs with execution times and time remaining
170
+ - **Enqueue Now** - Execute scheduled jobs immediately
171
+ - **Delete Jobs** - Remove scheduled jobs before execution
172
+ - **Clear All** - Bulk delete all scheduled jobs (with optional filtering)
173
+ - **Pagination** - Navigate through large lists of scheduled jobs
174
+ - **Filtering** - Filter by job class name for easy searching
175
+
176
+ #### 🔄 Retries Tab
177
+
178
+ - **View Failed Jobs** - See jobs that failed and are awaiting retry
179
+ - **Retry Now** - Execute retry jobs immediately
180
+ - **Kill Jobs** - Move retry jobs to dead queue
181
+ - **Delete Jobs** - Permanently remove retry jobs
182
+ - **Retry All** - Bulk retry all failed jobs (with optional filtering)
183
+ - **Clear All** - Bulk delete all retry jobs (with optional filtering)
184
+ - **Progress Indicators** - Visual progress bars showing retry attempts vs limits
185
+
186
+ #### ☠️ Dead Jobs Tab
187
+
188
+ - **View Dead Jobs** - Browse jobs that have exhausted all retry attempts
189
+ - **Resurrect Jobs** - Move dead jobs back to retry queue
190
+ - **Delete Permanently** - Remove dead jobs forever
191
+ - **Resurrect All** - Bulk resurrect all dead jobs (with optional filtering)
192
+ - **Clear All** - Bulk delete all dead jobs permanently (with optional filtering)
193
+ - **Error Details** - View error messages and stack traces
156
194
 
157
195
  ### Queue Operations
158
196
 
@@ -210,6 +248,36 @@ POST /queues/pause_all # Pause all non-critical queues
210
248
  POST /queues/resume_all # Resume all paused queues
211
249
  ```
212
250
 
251
+ ### Scheduled Jobs Endpoints
252
+
253
+ ```http
254
+ GET /scheduled # List scheduled jobs (paginated, filterable)
255
+ DELETE /scheduled/:id # Delete specific scheduled job
256
+ POST /scheduled/:id/enqueue # Enqueue scheduled job immediately
257
+ POST /scheduled/clear # Clear all scheduled jobs (with optional filter)
258
+ ```
259
+
260
+ ### Retry Jobs Endpoints
261
+
262
+ ```http
263
+ GET /retries # List retry jobs (paginated, filterable)
264
+ POST /retries/:id/retry # Retry specific job immediately
265
+ DELETE /retries/:id # Delete specific retry job
266
+ POST /retries/:id/kill # Kill retry job (move to dead queue)
267
+ POST /retries/retry_all # Retry all jobs (with optional filter)
268
+ POST /retries/clear # Clear all retry jobs (with optional filter)
269
+ ```
270
+
271
+ ### Dead Jobs Endpoints
272
+
273
+ ```http
274
+ GET /dead # List dead jobs (paginated, filterable)
275
+ POST /dead/:id/resurrect # Resurrect dead job to retry queue
276
+ DELETE /dead/:id # Delete dead job permanently
277
+ POST /dead/resurrect_all # Resurrect all dead jobs (with optional filter)
278
+ POST /dead/clear # Clear all dead jobs (with optional filter)
279
+ ```
280
+
213
281
  ### Queue-Specific Endpoints
214
282
 
215
283
  ```http
@@ -314,12 +382,46 @@ The gem works out-of-the-box on Heroku with no additional configuration needed.
314
382
 
315
383
  ### Compatibility
316
384
 
317
- - ✅ **Sidekiq Pro/Enterprise** - Full compatibility
385
+ - ✅ **Sidekiq Web UI Feature Parity** - Matches and extends official Sidekiq Web functionality
386
+ - ✅ **Sidekiq Pro/Enterprise** - Full compatibility with all Sidekiq editions
318
387
  - ✅ **Multi-process Sidekiq** - Advanced process management
319
- - ✅ **Existing Sidekiq setups** - Zero breaking changes
320
- - ✅ **All queue types** - Works with any Sidekiq job
321
- - ✅ **Docker/Kubernetes** - Container-ready
322
- - ✅ **Heroku/Cloud platforms** - Platform-agnostic
388
+ - ✅ **Existing Sidekiq setups** - Zero breaking changes, drop-in replacement
389
+ - ✅ **All job types** - Works with queued, scheduled, retry, and dead jobs
390
+ - ✅ **Docker/Kubernetes** - Container-ready with health checks
391
+ - ✅ **Heroku/Cloud platforms** - Platform-agnostic deployment
392
+
393
+ ---
394
+
395
+ ## 📝 Changelog
396
+
397
+ ### Version 1.1.0 (Latest)
398
+
399
+ 🎉 **Major Feature Release - Complete Sidekiq Management Suite**
400
+
401
+ **New Features:**
402
+ - ✨ **Tabbed Interface** - Organized views for Queues, Scheduled, Retries, and Dead jobs
403
+ - 📅 **Scheduled Jobs Management** - View, delete, enqueue immediately, and bulk operations
404
+ - 🔄 **Retry Jobs Management** - Retry now, delete, kill, and bulk operations with progress indicators
405
+ - ☠️ **Dead Jobs Management** - Resurrect, delete permanently, and bulk operations
406
+ - 📊 **Enhanced Statistics** - Added scheduled, retry, and dead job counts to main dashboard
407
+ - 🔢 **Smart Number Formatting** - Large numbers automatically formatted (92.9M, 1.2B, 5T) to prevent overflow
408
+ - 🔍 **Advanced Filtering** - Filter jobs by class name across all tabs
409
+ - 📄 **Pagination** - Efficient browsing through large job sets
410
+ - 💬 **Custom Modals** - Professional confirmation dialogs (no browser alerts)
411
+
412
+ **API Enhancements:**
413
+ - 🚀 **18 New REST Endpoints** - Complete API coverage for scheduled, retry, and dead jobs
414
+ - 📡 **Real-time Tab Counts** - Live updates for all job type counts
415
+ - 🎯 **Enhanced Error Handling** - Comprehensive error responses and validation
416
+
417
+ **UI/UX Improvements:**
418
+ - 📱 **Responsive Grid System** - Optimized 7-card stats layout that prevents overflow
419
+ - 🎨 **Enhanced Visual Design** - Progress bars, status indicators, and improved typography
420
+ - ⚡ **Performance Optimized** - Efficient loading and rendering of large job lists
421
+
422
+ **Backward Compatibility:**
423
+ - ✅ **Zero Breaking Changes** - All existing functionality preserved
424
+ - 🔄 **Seamless Upgrade** - Drop-in replacement for previous versions
323
425
 
324
426
  ---
325
427
 
@@ -373,4 +475,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
373
475
  **Created and maintained by [Jamal Awad](https://github.com/jamalawd)**
374
476
  *Ruby enthusiast, tech lead, & architect passionate about open-source development*
375
477
 
376
- *Transform your Sidekiq monitoring experience with professional-grade queue management.*
478
+ *Transform your Sidekiq experience with comprehensive job management - queues, scheduled jobs, retries, and dead jobs in one professional interface.*
@@ -179,12 +179,21 @@ module SidekiqQueueManager
179
179
 
180
180
  # Get the mount path from the engine's routes
181
181
  def engine_mount_path
182
- # Extract mount path from the current request path
183
- if request.path =~ %r{^(/[^/]+)}
184
- Regexp.last_match(1)
185
- else
186
- '/sidekiq_manager' # Default fallback
182
+ # Look through Rails routes for engine mounts
183
+ Rails.application.routes.routes.each do |route|
184
+ next unless route.respond_to?(:app)
185
+ next unless route.app.respond_to?(:app)
186
+
187
+ # Check if this route's app is our engine
188
+ if route.app.app == SidekiqQueueManager::Engine
189
+ path_spec = route.path.spec.to_s
190
+ return path_spec.gsub(/\(\.:format\)$/, '').chomp('/')
191
+ end
187
192
  end
193
+
194
+ nil
195
+ rescue StandardError
196
+ nil
188
197
  end
189
198
 
190
199
  # Common helper for accessing main application methods
@@ -7,6 +7,6 @@ module SidekiqQueueManager
7
7
  # - MAJOR: Incompatible API changes
8
8
  # - MINOR: Add functionality in backward compatible manner
9
9
  # - PATCH: Backward compatible bug fixes
10
- VERSION = '1.1.0'
10
+ VERSION = '1.1.1'
11
11
  end
12
12
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_queue_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamal Awad