passive_queue 0.1.0 → 1.0.0
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 +4 -4
- data/README.md +466 -1
- data/html/{landing.html → index.html} +13 -11
- data/html/web-ui.png +0 -0
- data/lib/passive_queue/version.rb +1 -1
- data/lib/passive_queue/web.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8b4f0e4d9843f7d1bd519582dfeeba0ba98282380a557f9aaf9508ee3fc6418
|
4
|
+
data.tar.gz: b52061271a1d520d154e4eb952e20ec430d6a571ade3fcf6830cff270e4b5c84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d51d7f54fcfdea3f7def1cab47104215f8188e5f226d820a72bc76e42827b2c4e63b815352acc627a6d87cbcd53123c9b2e886750b9a94fbd312c2cf43542cd2
|
7
|
+
data.tar.gz: 679e47135dde14ca024f90a8a820028cf1f4fca4e2b47b7f0a20bac9ab5755e6daf7b8a5dbecb0207907d139cef2536b6d5e09cf359d277a430acfe7435ad5df
|
data/README.md
CHANGED
@@ -1 +1,466 @@
|
|
1
|
-
|
1
|
+
<div align="center">
|
2
|
+
<img src="https://raw.githubusercontent.com/mensfeld/passive_queue/refs/heads/main/html/logo.svg" alt="passive queue logo" width="200">
|
3
|
+
</div>
|
4
|
+
|
5
|
+
# Passive Queue
|
6
|
+
|
7
|
+
**"Why do today what you can put off indefinitely?"**
|
8
|
+
|
9
|
+
✨ 100% Free ✨ Zero Dependencies ✨ Infinite Scalability
|
10
|
+
|
11
|
+
Passive Queue is a revolutionary background job processing system that achieves 100% success rate by never actually processing any jobs. It's the perfect solution for when you want all the benefits of a job queue without any of the messy complications of actually executing code.
|
12
|
+
|
13
|
+
## Why Choose Passive Queue?
|
14
|
+
|
15
|
+
Embrace the zen of non-execution with features designed for the modern mindful developer:
|
16
|
+
|
17
|
+
- **100% Reliable Non-Execution** - Every job you schedule is guaranteed to not run. Zero false positives - your tasks will never accidentally complete.
|
18
|
+
|
19
|
+
- **Blazing Fast Non-Performance** - Completes in 0ms every time. Infinite scalability since nothing scales faster than nothing.
|
20
|
+
|
21
|
+
- **Drop-in Replacement** - Simply set Passive Queue as your queue adapter. All your existing jobs will gracefully do nothing.
|
22
|
+
|
23
|
+
- **Advanced Non-Monitoring** - Real-time dashboard showing exactly how much isn't happening with detailed logs of non-executed tasks.
|
24
|
+
|
25
|
+
- **Zen Mode Integration** - Built-in mindfulness features including `bundle exec be passive` for ultimate developer tranquility.
|
26
|
+
|
27
|
+
- **Zero Carbon Footprint** - The most environmentally friendly job processor. When you do nothing, you consume nothing.
|
28
|
+
|
29
|
+
## Simple. Elegant. Nothing.
|
30
|
+
|
31
|
+
Getting started is as easy as doing nothing:
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
# 1. Add it to your Gemfile
|
35
|
+
gem "passive_queue"
|
36
|
+
|
37
|
+
# 2. Set it as your queue adapter
|
38
|
+
class Application < Rails::Application
|
39
|
+
# ...
|
40
|
+
config.active_job.queue_adapter = :passive_queue
|
41
|
+
end
|
42
|
+
|
43
|
+
# 3. Simply run it!
|
44
|
+
bundle exec be passive
|
45
|
+
|
46
|
+
# 4. Optionally you can also use the Web UI
|
47
|
+
Rails.application.routes.draw do
|
48
|
+
mount PassiveQueue::Engine => '/passive_queue'
|
49
|
+
end
|
50
|
+
```
|
51
|
+
|
52
|
+
## Live Dashboard
|
53
|
+
|
54
|
+
Experience Passive Queue in action with our beautiful dashboard:
|
55
|
+
|
56
|
+
- **Jobs Queued**: ∞ (All waiting peacefully)
|
57
|
+
- **Jobs Processed**: 0 (Perfect execution rate)
|
58
|
+
- **Uptime**: 100% (Of doing nothing)
|
59
|
+
- **Status**: Waiting for job to be scheduled...
|
60
|
+
|
61
|
+
Visit `/passive_queue` to witness the art of non-productivity in real-time with dark/light mode support!
|
62
|
+
|
63
|
+
<div align="center">
|
64
|
+
<img src="https://raw.githubusercontent.com/mensfeld/passive_queue/refs/heads/main/html/web-ui.png" alt="passive queue dashboard">
|
65
|
+
</div>
|
66
|
+
|
67
|
+
## Simple, Transparent Pricing
|
68
|
+
|
69
|
+
Pay nothing, get nothing. It's that simple.
|
70
|
+
|
71
|
+
### Free - $0 forever
|
72
|
+
- ✓ Up to ∞ jobs that won't run
|
73
|
+
- ✓ Basic non-monitoring
|
74
|
+
- ✓ Community non-support
|
75
|
+
- ✓ Zero carbon footprint
|
76
|
+
|
77
|
+
### Pro - $0 per month (Most Popular)
|
78
|
+
- ✓ Everything in Free
|
79
|
+
- ✓ Advanced non-analytics
|
80
|
+
- ✓ Priority non-execution
|
81
|
+
- ✓ Zen koans included
|
82
|
+
- ✓ 24/7 non-support
|
83
|
+
|
84
|
+
### Enterprise - $0 per month
|
85
|
+
- ✓ Everything in Pro
|
86
|
+
- ✓ Dedicated non-account manager
|
87
|
+
- ✓ Custom non-integrations
|
88
|
+
- ✓ SLA guaranteeing 99.99% non-uptime
|
89
|
+
- ✓ On-premise nothing deployment
|
90
|
+
|
91
|
+
## What Our Users Are Saying
|
92
|
+
|
93
|
+
Real feedback from developers who've achieved true non-productivity:
|
94
|
+
|
95
|
+
> "I scheduled 10,000 jobs last month and Passive Queue delivered on its promise - not a single one ran. Amazing!"
|
96
|
+
>
|
97
|
+
> **Sarah K.** - Senior Procrastination Engineer
|
98
|
+
|
99
|
+
> "Finally, a job processor that matches my work ethic. Passive Queue has revolutionized how I don't approach background tasks."
|
100
|
+
>
|
101
|
+
> **Mike T.** - Professional Postponer
|
102
|
+
|
103
|
+
> "Our productivity has never been lower. The peace of mind knowing nothing will ever execute accidentally is priceless."
|
104
|
+
>
|
105
|
+
> **DevOps Team** - Startup McStartupface
|
106
|
+
|
107
|
+
> "Since switching to Passive Queue, our newsletter emails never end up in spam folders. Our customers love the mystery of our non-communication strategy!"
|
108
|
+
>
|
109
|
+
> **Jessica R.** - Email Marketing Zen Master
|
110
|
+
|
111
|
+
> "Our data processing jobs can't corrupt the database if they never run. We've achieved 100% data integrity through the power of inaction!"
|
112
|
+
>
|
113
|
+
> **Alex L.** - Data Integrity Philosopher
|
114
|
+
|
115
|
+
> "Image resizing tasks that don't execute can't fill up our disk space. We've solved our storage problems by embracing the void. Genius!"
|
116
|
+
>
|
117
|
+
> **Carlos M.** - Storage Optimization Guru
|
118
|
+
|
119
|
+
## Performance Benchmarks
|
120
|
+
|
121
|
+
See how Passive Queue outperforms the competition in key metrics:
|
122
|
+
|
123
|
+
### Job Scheduling Speed
|
124
|
+
| Queue System | Jobs/Second | Latency (ms) | Memory Usage |
|
125
|
+
|--------------|-------------|--------------|--------------|
|
126
|
+
| **Passive Queue** | 10,000,000 | 0ms | 0 MB |
|
127
|
+
| Sidekiq | 4,137 | 2.3ms | 45 MB |
|
128
|
+
| Solid Queue | 1,932 | 3.1ms | 32 MB |
|
129
|
+
| Karafka | 22,850 | 1.8ms | 78 MB |
|
130
|
+
|
131
|
+
### Job Execution Performance
|
132
|
+
| Queue System | Avg Execution Time | Success Rate | Failed Jobs | Retry Overhead |
|
133
|
+
|--------------|-------------------|--------------|-------------|----------------|
|
134
|
+
| **Passive Queue** | 0ms | 100% | 0 | None |
|
135
|
+
| Sidekiq | 127ms | 97.3% | 2.7% | High |
|
136
|
+
| Solid Queue | 156ms | 96.8% | 3.2% | Medium |
|
137
|
+
| Karafka | 89ms | 98.1% | 1.9% | Low |
|
138
|
+
|
139
|
+
### Scalability Metrics
|
140
|
+
- **CPU Usage at 100k Jobs/hour**: Passive Queue 0% vs competitors 78-92%
|
141
|
+
- **Memory Usage Growth**: Passive Queue 0 MB vs competitors 780MB-1.8GB
|
142
|
+
- **Speed Advantage**: ∞x faster than any competitor
|
143
|
+
- **Cost Savings**: 100% - Zero infrastructure costs
|
144
|
+
- **Energy Efficiency**: Perfect - Zero carbon footprint
|
145
|
+
|
146
|
+
*Benchmark Disclaimer: All benchmark data has been carefully fabricated for entertainment purposes. Passive Queue's performance is theoretically perfect because it literally does nothing. Results may vary in production environments.*
|
147
|
+
|
148
|
+
## CLI Tools
|
149
|
+
|
150
|
+
### The Art of Being Passive
|
151
|
+
|
152
|
+
```bash
|
153
|
+
# Embrace the void
|
154
|
+
bundle exec be passive
|
155
|
+
|
156
|
+
# Meditate on your non-productivity
|
157
|
+
bundle exec be passive --zen
|
158
|
+
|
159
|
+
# Question the nature of execution
|
160
|
+
bundle exec be passive --philosophical
|
161
|
+
|
162
|
+
# Extended meditation sessions
|
163
|
+
bundle exec be passive --duration 30
|
164
|
+
```
|
165
|
+
|
166
|
+
💡 **Pro tip**: The most productive thing you can do is nothing. Passive Queue helps you achieve this zen state effortlessly.
|
167
|
+
|
168
|
+
## Configuration
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
# config/initializers/passive_queue.rb
|
172
|
+
PassiveQueue.configure do |config|
|
173
|
+
config.meditation_duration = 10 # seconds
|
174
|
+
config.zen_level = :transcendent # :low, :medium, :high, :transcendent
|
175
|
+
config.philosophical_depth = :deep # :shallow, :deep, :profound, :existential
|
176
|
+
config.silence_mode = false # suppress all output
|
177
|
+
end
|
178
|
+
```
|
179
|
+
|
180
|
+
## Complete API Reference
|
181
|
+
|
182
|
+
### Core Adapter Class
|
183
|
+
|
184
|
+
The heart of Passive Queue's non-execution engine.
|
185
|
+
|
186
|
+
#### `PassiveQueue::Adapter`
|
187
|
+
|
188
|
+
```ruby
|
189
|
+
class PassiveQueue::Adapter
|
190
|
+
def initialize
|
191
|
+
# Initialize with the zen of doing nothing
|
192
|
+
end
|
193
|
+
|
194
|
+
def enqueue(job)
|
195
|
+
# Gracefully accept a job for supreme non-execution
|
196
|
+
# Returns: Zen acceptance with logging
|
197
|
+
end
|
198
|
+
|
199
|
+
def enqueue_at(job, timestamp)
|
200
|
+
# Schedule a job for perpetual non-execution at specified time
|
201
|
+
# Parameters:
|
202
|
+
# job: The job that will achieve eternal waiting
|
203
|
+
# timestamp: When the job should not be executed
|
204
|
+
end
|
205
|
+
|
206
|
+
def enqueue_all(jobs)
|
207
|
+
# Accept multiple jobs with zen-like acceptance
|
208
|
+
# Parameters:
|
209
|
+
# jobs: Array of jobs to collectively not process
|
210
|
+
# Returns: Array of zen acceptances
|
211
|
+
end
|
212
|
+
|
213
|
+
def stopping?
|
214
|
+
# Always returns true - we're always in peaceful stopping state
|
215
|
+
# Returns: true (eternal zen state)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
```
|
219
|
+
|
220
|
+
### Configuration API
|
221
|
+
|
222
|
+
#### `PassiveQueue::Configuration`
|
223
|
+
|
224
|
+
```ruby
|
225
|
+
PassiveQueue.configure do |config|
|
226
|
+
config.meditation_duration = 5 # Duration in seconds (default: 5)
|
227
|
+
config.zen_level = :medium # :low, :medium, :high, :transcendent
|
228
|
+
config.philosophical_depth = :shallow # :shallow, :deep, :profound, :existential
|
229
|
+
config.silence_mode = false # Suppress all enlightening output
|
230
|
+
end
|
231
|
+
|
232
|
+
# Access configuration
|
233
|
+
PassiveQueue.configuration.zen_levels # => [:low, :medium, :high, :transcendent]
|
234
|
+
PassiveQueue.configuration.philosophical_depths # => [:shallow, :deep, :profound, :existential]
|
235
|
+
```
|
236
|
+
|
237
|
+
### Wisdom API
|
238
|
+
|
239
|
+
#### `PassiveQueue.zen_quotes`
|
240
|
+
|
241
|
+
Returns an array of enlightening quotes about the art of non-execution:
|
242
|
+
|
243
|
+
```ruby
|
244
|
+
PassiveQueue.zen_quotes
|
245
|
+
# => [
|
246
|
+
# "The best job is the one never executed.",
|
247
|
+
# "In the stillness of non-processing, we find true performance.",
|
248
|
+
# "Why do something when you can do nothing?",
|
249
|
+
# "The art of non-execution is the highest form of productivity.",
|
250
|
+
# "A queue that does nothing is a queue that never fails.",
|
251
|
+
# "In the void of processing, infinite possibilities exist.",
|
252
|
+
# "The job that is never run is the job that never crashes.",
|
253
|
+
# "Embrace the emptiness of your background tasks.",
|
254
|
+
# "True scalability comes from processing nothing at all.",
|
255
|
+
# "The zen master processes without processing."
|
256
|
+
# ]
|
257
|
+
```
|
258
|
+
|
259
|
+
#### `PassiveQueue.philosophical_thoughts`
|
260
|
+
|
261
|
+
Returns an array of deep philosophical insights:
|
262
|
+
|
263
|
+
```ruby
|
264
|
+
PassiveQueue.philosophical_thoughts
|
265
|
+
# => [
|
266
|
+
# "If a job is scheduled but never runs, did it ever really exist?",
|
267
|
+
# "What is the sound of one background task not processing?",
|
268
|
+
# "The universe is vast and infinite, much like your job queue.",
|
269
|
+
# "In the grand scheme of things, what difference does one unprocessed job make?",
|
270
|
+
# "Perhaps the real treasure was the jobs we never processed along the way.",
|
271
|
+
# "Time is an illusion. Deadlines are an even bigger illusion.",
|
272
|
+
# "The job queue is a metaphor for the human condition.",
|
273
|
+
# "We are all just jobs waiting to be processed in the great queue of existence.",
|
274
|
+
# "The passive queue teaches us that sometimes the most profound action is inaction.",
|
275
|
+
# "In choosing to do nothing, we choose everything."
|
276
|
+
# ]
|
277
|
+
```
|
278
|
+
|
279
|
+
### Web Dashboard API
|
280
|
+
|
281
|
+
Mount the dashboard to access these enlightening endpoints:
|
282
|
+
|
283
|
+
```ruby
|
284
|
+
# config/routes.rb
|
285
|
+
Rails.application.routes.draw do
|
286
|
+
mount PassiveQueue::Engine => '/passive_queue'
|
287
|
+
end
|
288
|
+
```
|
289
|
+
|
290
|
+
#### `GET /passive_queue/api/stats`
|
291
|
+
|
292
|
+
Returns comprehensive non-performance metrics:
|
293
|
+
|
294
|
+
```json
|
295
|
+
{
|
296
|
+
"jobs_queued": 42579,
|
297
|
+
"jobs_processed": 0,
|
298
|
+
"jobs_failed": 0,
|
299
|
+
"jobs_succeeded": "∞",
|
300
|
+
"uptime": "127 days of perfect inactivity",
|
301
|
+
"memory_usage": "0 MB",
|
302
|
+
"cpu_usage": "0%",
|
303
|
+
"queue_names": ["default", "mailers", "active_storage", "imports", "exports"],
|
304
|
+
"processing_time": "0ms",
|
305
|
+
"success_rate": "100%",
|
306
|
+
"zen_level": "Transcendent"
|
307
|
+
}
|
308
|
+
```
|
309
|
+
|
310
|
+
#### `GET /passive_queue/api/zen`
|
311
|
+
|
312
|
+
Returns a randomly selected zen quote for daily enlightenment:
|
313
|
+
|
314
|
+
```json
|
315
|
+
{
|
316
|
+
"quote": "The best job is the one never executed."
|
317
|
+
}
|
318
|
+
```
|
319
|
+
|
320
|
+
#### `GET /passive_queue/`
|
321
|
+
|
322
|
+
The main dashboard featuring:
|
323
|
+
- Real-time stats of jobs not being processed
|
324
|
+
- System metrics showing perfect efficiency (0% CPU, 0 MB memory)
|
325
|
+
- Queue status with detailed non-activity logs
|
326
|
+
- Zen quotes for daily inspiration
|
327
|
+
- Dark/light mode support for comfortable non-monitoring
|
328
|
+
- Recent non-activity table showing successfully not processed jobs
|
329
|
+
|
330
|
+
### CLI API
|
331
|
+
|
332
|
+
#### `PassiveQueue::CLI`
|
333
|
+
|
334
|
+
Access the command-line interface for ultimate zen:
|
335
|
+
|
336
|
+
```bash
|
337
|
+
# Basic meditation mode
|
338
|
+
be passive
|
339
|
+
|
340
|
+
# Options available:
|
341
|
+
be passive --zen # Enable zen quotes during meditation
|
342
|
+
be passive --philosophical # Enable philosophical thoughts
|
343
|
+
be passive --duration 10 # Set meditation duration (seconds)
|
344
|
+
be passive --aggressive # ERROR: Conflicts with zen philosophy
|
345
|
+
be passive --help # Show enlightening help message
|
346
|
+
```
|
347
|
+
|
348
|
+
Example CLI session:
|
349
|
+
|
350
|
+
```bash
|
351
|
+
$ be passive --zen --duration 10
|
352
|
+
🧘 Entering passive meditation mode...
|
353
|
+
Duration: 10 seconds
|
354
|
+
Zen level: transcendent
|
355
|
+
|
356
|
+
💭 The best job is the one never executed.
|
357
|
+
|
358
|
+
💭 In the stillness of non-processing, we find true performance.
|
359
|
+
|
360
|
+
💭 A queue that does nothing is a queue that never fails.
|
361
|
+
|
362
|
+
✨ Meditation complete! You successfully did nothing for 10.02 seconds.
|
363
|
+
Your passive queue energy has been restored.
|
364
|
+
```
|
365
|
+
|
366
|
+
### ActiveJob Integration API
|
367
|
+
|
368
|
+
#### Seamless Rails Integration
|
369
|
+
|
370
|
+
```ruby
|
371
|
+
# Automatic adapter registration
|
372
|
+
# No additional configuration needed beyond:
|
373
|
+
config.active_job.queue_adapter = :passive_queue
|
374
|
+
|
375
|
+
# Your existing jobs work unchanged:
|
376
|
+
class UserMailerJob < ApplicationJob
|
377
|
+
queue_as :default
|
378
|
+
|
379
|
+
def perform(user_id)
|
380
|
+
# This code achieves zen through non-execution
|
381
|
+
UserMailer.welcome_email(User.find(user_id)).deliver_now
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
385
|
+
# Queue as normal - job will be gracefully not processed
|
386
|
+
UserMailerJob.perform_later(user.id)
|
387
|
+
# Output: 🧘 Passively accepted UserMailerJob with supreme non-execution
|
388
|
+
# Arguments: [123]
|
389
|
+
# Queue: default
|
390
|
+
# Status: Successfully not processed ✨
|
391
|
+
```
|
392
|
+
|
393
|
+
### Error Handling API
|
394
|
+
|
395
|
+
Passive Queue's revolutionary approach to error handling:
|
396
|
+
|
397
|
+
```ruby
|
398
|
+
# No errors can occur because no code executes
|
399
|
+
# Perfect exception handling through non-execution
|
400
|
+
# 100% uptime guaranteed through inactivity
|
401
|
+
# Zero error logs because zero errors are possible
|
402
|
+
|
403
|
+
# Exception hierarchy (for philosophical completeness):
|
404
|
+
PassiveQueue::Error < StandardError
|
405
|
+
# ^ Never raised because nothing ever fails
|
406
|
+
```
|
407
|
+
|
408
|
+
### Monitoring & Observability API
|
409
|
+
|
410
|
+
```ruby
|
411
|
+
# All metrics are perfectly predictable:
|
412
|
+
# - Jobs processed: Always 0
|
413
|
+
# - Memory usage: Always 0 MB
|
414
|
+
# - CPU usage: Always 0%
|
415
|
+
# - Error rate: Always 0%
|
416
|
+
# - Success rate: Always 100%
|
417
|
+
# - Latency: Always 0ms
|
418
|
+
# - Throughput: ∞ jobs/second (in the realm of non-execution)
|
419
|
+
```
|
420
|
+
|
421
|
+
## Philosophy
|
422
|
+
|
423
|
+
Passive Queue is built on the fundamental principle that the most reliable code is code that never runs. By embracing the art of non-execution, we achieve:
|
424
|
+
|
425
|
+
- **Perfect Reliability**: Never fails because never executes
|
426
|
+
- **Infinite Performance**: Completes instantly by doing nothing
|
427
|
+
- **Zero Resource Usage**: The ultimate in efficiency
|
428
|
+
- **Complete Compatibility**: Works with any existing job without modification
|
429
|
+
- **Inner Peace**: Developers can rest easy knowing nothing will break
|
430
|
+
|
431
|
+
## FAQ ❓
|
432
|
+
|
433
|
+
**Q: Will my jobs actually run?**
|
434
|
+
A: No, and that's the point! Your jobs achieve perfect success by never executing.
|
435
|
+
|
436
|
+
**Q: What happens to the job data?**
|
437
|
+
A: It's gracefully accepted and logged, then achieves eternal zen in the void of non-processing.
|
438
|
+
|
439
|
+
**Q: Is this production ready?**
|
440
|
+
A: Absolutely! Version 1.0.0 represents the pinnacle of stability through inaction.
|
441
|
+
|
442
|
+
**Q: How do I debug failed jobs?**
|
443
|
+
A: There are no failed jobs, only successfully non-executed ones.
|
444
|
+
|
445
|
+
**Q: What about job retries?**
|
446
|
+
A: Why retry when you can achieve perfect success the first time by doing nothing?
|
447
|
+
|
448
|
+
## Contributing
|
449
|
+
|
450
|
+
We welcome contributions that further the art of non-productivity. Fork the repository, create a feature branch, commit your non-changes, push to the branch, and create a Pull Request for review.
|
451
|
+
|
452
|
+
## License
|
453
|
+
|
454
|
+
This project is licensed under the MIT License.
|
455
|
+
|
456
|
+
## Acknowledgments
|
457
|
+
|
458
|
+
Inspired by the zen philosophy of doing nothing and several attendees of the RailsConf 2025. Built with love, Ruby, and an appreciation for the absurd. Special thanks to all the background jobs that never ran.
|
459
|
+
|
460
|
+
---
|
461
|
+
|
462
|
+
*"In choosing to do nothing, we choose everything."* - Passive Queue Philosophy
|
463
|
+
|
464
|
+
**The Art of Non-Execution**
|
465
|
+
|
466
|
+
© 2025 Maciej Mensfeld. All rights reserved. No jobs were harmed in the making of this product.
|
@@ -5,6 +5,7 @@
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
6
|
<title>Passive Queue - The Art of Non-Execution</title>
|
7
7
|
|
8
|
+
<link rel="icon" href="logo.svg" type="image/svg+xml">
|
8
9
|
<script>
|
9
10
|
(function() {
|
10
11
|
// Get saved theme or default to auto
|
@@ -210,17 +211,17 @@
|
|
210
211
|
<li><a href="#demo">Demo</a></li>
|
211
212
|
</ul>
|
212
213
|
</div>
|
213
|
-
<a class="btn btn-ghost text-xl font-light" href="https://passivequeue.pro">
|
214
214
|
|
215
215
|
|
216
|
+
<a class="btn btn-ghost text-xl font-light" href="https://passivequeue.pro">
|
216
217
|
<img src="logo.svg" alt="Passive Queue Logo"
|
217
|
-
class="w-16 h-16 mx-auto mb-0 block mr-2 logo-light" id="" style="width: 28px; height: 28px;">
|
218
|
+
class="w-16 h-16 mx-auto mb-0 block mr-2 logo-light hidden" id="" style="width: 28px; height: 28px;">
|
218
219
|
<!-- Dark mode logo -->
|
219
220
|
<img src="logo-dark.svg" alt="Passive Queue Logo"
|
220
221
|
class="w-16 h-16 mx-auto mb-0 mr-2 hidden logo-dark" id="" style="width: 28px; height: 28px;">
|
222
|
+
<span class="hidden md:inline">Passive Queue</span>
|
223
|
+
</a>
|
221
224
|
|
222
|
-
Passive Queue
|
223
|
-
</a>
|
224
225
|
</div>
|
225
226
|
<div class="navbar-center hidden lg:flex">
|
226
227
|
<ul class="menu menu-horizontal px-1 text-lg">
|
@@ -307,9 +308,9 @@ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', upd
|
|
307
308
|
<a href="#install" class="btn btn-primary btn-lg">
|
308
309
|
Get Started Right Now!
|
309
310
|
</a>
|
310
|
-
<
|
311
|
+
<a href="https://github.com/mensfeld/passive_queue/?tab=readme-ov-file#complete-api-reference" class="btn btn-outline btn-lg">
|
311
312
|
View Documentation
|
312
|
-
</
|
313
|
+
</a>
|
313
314
|
</div>
|
314
315
|
<div class="mt-8 text-sm text-base-content/80">
|
315
316
|
✨ 100% Free ✨ Zero Dependencies ✨ Infinite Scalability
|
@@ -1026,8 +1027,8 @@ bundle exec be passive --philosophical</code></pre>
|
|
1026
1027
|
</div>
|
1027
1028
|
|
1028
1029
|
<div class="card-actions justify-center mt-8">
|
1029
|
-
<
|
1030
|
-
<
|
1030
|
+
<a href="https://github.com/mensfeld/passive_queue/?tab=readme-ov-file#complete-api-reference" class="btn btn-primary">View Full Documentation</a>
|
1031
|
+
<a href="https://github.com/mensfeld/passive_queue/?tab=readme-ov-file#complete-api-reference" class="btn btn-outline">API Reference</a>
|
1031
1032
|
</div>
|
1032
1033
|
</div>
|
1033
1034
|
</div>
|
@@ -1035,7 +1036,8 @@ bundle exec be passive --philosophical</code></pre>
|
|
1035
1036
|
</div>
|
1036
1037
|
</section>
|
1037
1038
|
<!-- Footer -->
|
1038
|
-
|
1039
|
+
|
1040
|
+
<footer class="footer footer-center p-10 bg-base-200 text-base-content hidden md:block">
|
1039
1041
|
<aside>
|
1040
1042
|
<div class="text-4xl mb-4">
|
1041
1043
|
<img src="logo.svg" alt="Passive Queue Logo"
|
@@ -1049,7 +1051,7 @@ bundle exec be passive --philosophical</code></pre>
|
|
1049
1051
|
<p class="font-light">The Art of Non-Execution</p>
|
1050
1052
|
<p class="text-sm text-base-content/60">© 2025 Maciej Mensfeld. All rights reserved. No jobs were harmed in the making of this product.</p>
|
1051
1053
|
</aside>
|
1052
|
-
<nav>
|
1054
|
+
<nav class="mt-6">
|
1053
1055
|
<div class="grid grid-flow-col gap-4">
|
1054
1056
|
<a href="https://github.com/mensfeld/passive_queue" class="link link-hover">GitHub</a>
|
1055
1057
|
<a href="#docs" class="link link-hover">Documentation</a>
|
@@ -1057,7 +1059,7 @@ bundle exec be passive --philosophical</code></pre>
|
|
1057
1059
|
<a href="https://mensfeld.pl/tag/passive_queue/" class="link link-hover">Blog</a>
|
1058
1060
|
</div>
|
1059
1061
|
</nav>
|
1060
|
-
<nav>
|
1062
|
+
<nav class="mt-6">
|
1061
1063
|
<div class="grid grid-flow-col gap-4">
|
1062
1064
|
<a href="https://twitter.com/maciejmensfeld" class="btn btn-ghost btn-sm">
|
1063
1065
|
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
data/html/web-ui.png
ADDED
Binary file
|
data/lib/passive_queue/web.rb
CHANGED
@@ -98,6 +98,7 @@ module PassiveQueue
|
|
98
98
|
<meta charset="UTF-8">
|
99
99
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
100
100
|
<title>Passive Queue Dashboard - The Art of Non-Execution</title>
|
101
|
+
<link rel="icon" href="/passive_queue/logo.svg" type="image/svg+xml">
|
101
102
|
|
102
103
|
<script>
|
103
104
|
(function() {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passive_queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maciej Mensfeld
|
@@ -24,9 +24,10 @@ files:
|
|
24
24
|
- LICENSE
|
25
25
|
- README.md
|
26
26
|
- bin/be
|
27
|
-
- html/
|
27
|
+
- html/index.html
|
28
28
|
- html/logo-dark.svg
|
29
29
|
- html/logo.svg
|
30
|
+
- html/web-ui.png
|
30
31
|
- lib/active_job/queue_adapters/passive_queue_adapter.rb
|
31
32
|
- lib/passive_queue.rb
|
32
33
|
- lib/passive_queue/adapter.rb
|