passive_queue 1.0.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: a8b4f0e4d9843f7d1bd519582dfeeba0ba98282380a557f9aaf9508ee3fc6418
4
- data.tar.gz: b52061271a1d520d154e4eb952e20ec430d6a571ade3fcf6830cff270e4b5c84
3
+ metadata.gz: 9626aa3a54166dec9163d940f247127a3d58327cd505ce19c290987114b0042c
4
+ data.tar.gz: bdb330ddf8cae62fda5f291154d47b22c9c04d40b658ecf57e21abdb27f972ab
5
5
  SHA512:
6
- metadata.gz: d51d7f54fcfdea3f7def1cab47104215f8188e5f226d820a72bc76e42827b2c4e63b815352acc627a6d87cbcd53123c9b2e886750b9a94fbd312c2cf43542cd2
7
- data.tar.gz: 679e47135dde14ca024f90a8a820028cf1f4fca4e2b47b7f0a20bac9ab5755e6daf7b8a5dbecb0207907d139cef2536b6d5e09cf359d277a430acfe7435ad5df
6
+ metadata.gz: 121494063566f43ca2185eefb38972d28cc94089122b3f81abea0797c000e99f8793b8ad93aa27460d4b9c7080192afab51c0dfdd2c8fe8c07275e521e245cee
7
+ data.tar.gz: 60352ffec9bb812518ee83f37eb9b5d3fa33179df11a7848996f027a469a9d96e8b8ac258738cb041ee815b7c8a400f82c9cfd16b2d34c4ad35cc3373c2f7a0d
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 4.0.4
data/.yard-lint.yml ADDED
@@ -0,0 +1,274 @@
1
+ # YARD-Lint Configuration
2
+ # See https://github.com/mensfeld/yard-lint for documentation
3
+
4
+ # Global settings for all validators
5
+ AllValidators:
6
+ FailOnSeverity: convention
7
+ MinCoverage: 100.0
8
+ YardOptions:
9
+ - "--private"
10
+ - "--protected"
11
+
12
+ # Documentation validators
13
+ Documentation/UndocumentedObjects:
14
+ Description: All classes, modules, and methods must be documented
15
+ Enabled: true
16
+ Severity: error
17
+ ExcludedMethods:
18
+ - initialize/0
19
+ - "/^_/"
20
+
21
+ Documentation/UndocumentedMethodArguments:
22
+ Description: All method parameters must have @param documentation
23
+ Enabled: true
24
+ Severity: error
25
+
26
+ Documentation/UndocumentedBooleanMethods:
27
+ Description: Checks that question mark methods document their boolean return.
28
+ Enabled: true
29
+ Severity: warning
30
+
31
+ Documentation/UndocumentedOptions:
32
+ Description: Detects methods with options hash parameters but no @option tags.
33
+ Enabled: true
34
+ Severity: warning
35
+
36
+ Documentation/MarkdownSyntax:
37
+ Description: All markdown in documentation must be valid
38
+ Enabled: true
39
+ Severity: error
40
+
41
+ Documentation/EmptyCommentLine:
42
+ Description: Detects empty comment lines at the start or end of documentation blocks.
43
+ Enabled: true
44
+ Severity: convention
45
+ EnabledPatterns:
46
+ Leading: true
47
+ Trailing: true
48
+
49
+ Documentation/BlankLineBeforeDefinition:
50
+ Description: Detects blank lines between YARD documentation and method definition.
51
+ Enabled: true
52
+ Severity: convention
53
+ OrphanedSeverity: convention
54
+ EnabledPatterns:
55
+ SingleBlankLine: true
56
+ OrphanedDocs: true
57
+
58
+ # Tags validators
59
+ Tags/Order:
60
+ Description: Tags must follow consistent ordering
61
+ Enabled: true
62
+ Severity: error
63
+ EnforcedOrder:
64
+ - param
65
+ - option
66
+ - yield
67
+ - yieldparam
68
+ - yieldreturn
69
+ - return
70
+ - raise
71
+ - see
72
+ - example
73
+ - note
74
+ - todo
75
+
76
+ Tags/InvalidTypes:
77
+ Description: Type specifications must use valid YARD syntax
78
+ Enabled: true
79
+ Severity: error
80
+ ValidatedTags:
81
+ - param
82
+ - option
83
+ - return
84
+
85
+ Tags/TypeSyntax:
86
+ Description: Validates YARD type syntax using YARD parser.
87
+ Enabled: true
88
+ Severity: warning
89
+ ValidatedTags:
90
+ - param
91
+ - option
92
+ - return
93
+ - yieldreturn
94
+
95
+ Tags/MeaninglessTag:
96
+ Description: Detects @param/@option tags on classes, modules, or constants.
97
+ Enabled: true
98
+ Severity: warning
99
+ CheckedTags:
100
+ - param
101
+ - option
102
+ InvalidObjectTypes:
103
+ - class
104
+ - module
105
+ - constant
106
+
107
+ Tags/CollectionType:
108
+ Description: Collections must use YARD standard syntax (e.g., Hash{K => V}, Array<Type>)
109
+ Enabled: true
110
+ Severity: error
111
+ EnforcedStyle: long
112
+ ValidatedTags:
113
+ - param
114
+ - option
115
+ - return
116
+ - yieldreturn
117
+
118
+ Tags/TagTypePosition:
119
+ Description: Validates type annotation position in tags.
120
+ Enabled: true
121
+ Severity: convention
122
+ CheckedTags:
123
+ - param
124
+ - option
125
+ EnforcedStyle: type_after_name
126
+
127
+ Tags/ApiTags:
128
+ Description: Enforces @api tags on public objects.
129
+ Enabled: false
130
+ Severity: warning
131
+ AllowedApis:
132
+ - public
133
+ - private
134
+ - internal
135
+
136
+ Tags/OptionTags:
137
+ Description: Requires @option tags for methods with options parameters.
138
+ Enabled: true
139
+ Severity: warning
140
+
141
+ Tags/ExampleSyntax:
142
+ Description: Code in @example tags must be valid Ruby syntax
143
+ Enabled: true
144
+ Severity: error
145
+
146
+ Tags/RedundantParamDescription:
147
+ Description: Detects meaningless parameter descriptions that add no value.
148
+ Enabled: true
149
+ Severity: convention
150
+ CheckedTags:
151
+ - param
152
+ - option
153
+ Articles:
154
+ - The
155
+ - the
156
+ - A
157
+ - a
158
+ - An
159
+ - an
160
+ MaxRedundantWords: 6
161
+ GenericTerms:
162
+ - object
163
+ - instance
164
+ - value
165
+ - data
166
+ - item
167
+ - element
168
+ EnabledPatterns:
169
+ ArticleParam: true
170
+ PossessiveParam: true
171
+ TypeRestatement: true
172
+ ParamToVerb: true
173
+ IdPattern: true
174
+ DirectionalDate: true
175
+ TypeGeneric: true
176
+
177
+ Tags/InformalNotation:
178
+ Description: Detects informal tag notation patterns like "Note:" instead of @note.
179
+ Enabled: true
180
+ Severity: warning
181
+ CaseSensitive: false
182
+ RequireStartOfLine: true
183
+ Patterns:
184
+ Note: "@note"
185
+ Todo: "@todo"
186
+ TODO: "@todo"
187
+ FIXME: "@todo"
188
+ See: "@see"
189
+ See also: "@see"
190
+ Warning: "@deprecated"
191
+ Deprecated: "@deprecated"
192
+ Author: "@author"
193
+ Version: "@version"
194
+ Since: "@since"
195
+ Returns: "@return"
196
+ Raises: "@raise"
197
+ Example: "@example"
198
+
199
+ Tags/NonAsciiType:
200
+ Description: Detects non-ASCII characters in type annotations.
201
+ Enabled: true
202
+ Severity: warning
203
+ ValidatedTags:
204
+ - param
205
+ - option
206
+ - return
207
+ - yieldreturn
208
+ - yieldparam
209
+
210
+ Tags/TagGroupSeparator:
211
+ Description: Enforces blank line separators between different YARD tag groups.
212
+ Enabled: false
213
+ Severity: convention
214
+ TagGroups:
215
+ param:
216
+ - param
217
+ - option
218
+ return:
219
+ - return
220
+ error:
221
+ - raise
222
+ - throws
223
+ example:
224
+ - example
225
+ meta:
226
+ - see
227
+ - note
228
+ - todo
229
+ - deprecated
230
+ - since
231
+ - version
232
+ - api
233
+ yield:
234
+ - yield
235
+ - yieldparam
236
+ - yieldreturn
237
+ RequireAfterDescription: false
238
+
239
+ # Warnings validators - catches YARD parser errors
240
+ Warnings/UnknownTag:
241
+ Description: Detects unknown YARD tags.
242
+ Enabled: true
243
+ Severity: error
244
+
245
+ Warnings/UnknownDirective:
246
+ Description: Detects unknown YARD directives.
247
+ Enabled: true
248
+ Severity: error
249
+
250
+ Warnings/InvalidTagFormat:
251
+ Description: Detects malformed tag syntax.
252
+ Enabled: true
253
+ Severity: error
254
+
255
+ Warnings/InvalidDirectiveFormat:
256
+ Description: Detects malformed directive syntax.
257
+ Enabled: true
258
+ Severity: error
259
+
260
+ Warnings/DuplicatedParameterName:
261
+ Description: Detects duplicate @param tags.
262
+ Enabled: true
263
+ Severity: error
264
+
265
+ Warnings/UnknownParameterName:
266
+ Description: Detects @param tags for non-existent parameters.
267
+ Enabled: true
268
+ Severity: error
269
+
270
+ # Semantic validators
271
+ Semantic/AbstractMethods:
272
+ Description: Ensures @abstract methods do not have real implementations.
273
+ Enabled: true
274
+ Severity: warning
data/CHANGELOG.md CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. Since this is Passive Queue, "changes" might be a strong word.
4
4
 
5
+ ## [Unreleased]
6
+
7
+ ## [1.1.1] - 2026-05-18
8
+
9
+ ### Changed
10
+ - Replaced expired `passivequeue.pro` and `passivequeue.io` domain references with the GitHub repository URL and maintainer email
11
+
12
+ ## [1.1.0] - 2025-11-13
13
+
14
+ ### Changed
15
+ - Dropped Ruby 3.1 and 3.2 support - now requires Ruby >= 3.3.0
16
+ - Embracing modern Ruby while maintaining the art of doing nothing
17
+
18
+ ### Added
19
+ - GitHub Actions CI workflow with yard-lint validation
20
+ - Trusted publishing workflow for automated gem releases
21
+ - Continuous integration for documentation quality
22
+
23
+ ## [1.0.1] - Unreleased
24
+
25
+ ### Fixed
26
+ - Potential technical overhead by adding RSpec to the gem?
27
+
5
28
  ## [1.0.0] - 2025-07-12
6
29
 
7
30
  ### Added
data/Gemfile CHANGED
@@ -2,5 +2,7 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem "rake", "~> 13.0"
6
- gem "rspec", "~> 3.0"
5
+ gem "rake"
6
+ gem "minitest"
7
+ gem "rack"
8
+ gem "simplecov"
data/Gemfile.lint ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Documentation linting
6
+ gem 'yard-lint'
data/Gemfile.lint.lock ADDED
@@ -0,0 +1,23 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ yard (0.9.38)
5
+ yard-lint (1.4.0)
6
+ yard (~> 0.9)
7
+ zeitwerk (~> 2.6)
8
+ zeitwerk (2.7.4)
9
+
10
+ PLATFORMS
11
+ ruby
12
+ x86_64-linux
13
+
14
+ DEPENDENCIES
15
+ yard-lint
16
+
17
+ CHECKSUMS
18
+ yard (0.9.38) sha256=721fb82afb10532aa49860655f6cc2eaa7130889df291b052e1e6b268283010f
19
+ yard-lint (1.4.0) sha256=7dd88fbb08fd77cb840bea899d58812817b36d92291b5693dd0eeb3af9f91f0f
20
+ zeitwerk (2.7.4) sha256=2bef90f356bdafe9a6c2bd32bcd804f83a4f9b8bc27f3600fff051eb3edcec8b
21
+
22
+ BUNDLED WITH
23
+ 4.0.3
data/Gemfile.lock CHANGED
@@ -1,35 +1,36 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- passive_queue (1.0.0)
4
+ passive_queue (1.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- diff-lcs (1.6.2)
10
- rake (13.3.0)
11
- rspec (3.13.1)
12
- rspec-core (~> 3.13.0)
13
- rspec-expectations (~> 3.13.0)
14
- rspec-mocks (~> 3.13.0)
15
- rspec-core (3.13.5)
16
- rspec-support (~> 3.13.0)
17
- rspec-expectations (3.13.5)
18
- diff-lcs (>= 1.2.0, < 2.0)
19
- rspec-support (~> 3.13.0)
20
- rspec-mocks (3.13.5)
21
- diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.13.0)
23
- rspec-support (3.13.4)
9
+ docile (1.4.1)
10
+ drb (2.2.3)
11
+ minitest (6.0.6)
12
+ drb (~> 2.0)
13
+ prism (~> 1.5)
14
+ prism (1.9.0)
15
+ rack (3.2.6)
16
+ rake (13.4.2)
17
+ simplecov (0.22.0)
18
+ docile (~> 1.1)
19
+ simplecov-html (~> 0.11)
20
+ simplecov_json_formatter (~> 0.1)
21
+ simplecov-html (0.13.2)
22
+ simplecov_json_formatter (0.1.4)
24
23
 
25
24
  PLATFORMS
26
25
  ruby
27
26
  x86_64-linux
28
27
 
29
28
  DEPENDENCIES
29
+ minitest
30
30
  passive_queue!
31
- rake (~> 13.0)
32
- rspec (~> 3.0)
31
+ rack
32
+ rake
33
+ simplecov
33
34
 
34
35
  BUNDLED WITH
35
- 2.6.9
36
+ 4.0.3
data/README.md CHANGED
@@ -428,7 +428,7 @@ Passive Queue is built on the fundamental principle that the most reliable code
428
428
  - **Complete Compatibility**: Works with any existing job without modification
429
429
  - **Inner Peace**: Developers can rest easy knowing nothing will break
430
430
 
431
- ## FAQ
431
+ ## FAQ
432
432
 
433
433
  **Q: Will my jobs actually run?**
434
434
  A: No, and that's the point! Your jobs achieve perfect success by never executing.
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/setup'
4
+ require 'bundler/gem_tasks'
5
+ require 'minitest/test_task'
6
+
7
+ Minitest::TestTask.create do |t|
8
+ t.libs << 'test' << 'lib'
9
+ t.warning = false
10
+ t.test_prelude = 'require "test_helper"'
11
+ t.test_globs = ['test/**/*_test.rb']
12
+ end
13
+
14
+ task default: :test
data/html/index.html CHANGED
@@ -213,7 +213,7 @@
213
213
  </div>
214
214
 
215
215
 
216
- <a class="btn btn-ghost text-xl font-light" href="https://passivequeue.pro">
216
+ <a class="btn btn-ghost text-xl font-light" href="https://github.com/mensfeld/passive_queue">
217
217
  <img src="logo.svg" alt="Passive Queue Logo"
218
218
  class="w-16 h-16 mx-auto mb-0 block mr-2 logo-light hidden" id="" style="width: 28px; height: 28px;">
219
219
  <!-- Dark mode logo -->
@@ -568,7 +568,7 @@ end
568
568
  </li>
569
569
  </ul>
570
570
  <div class="card-actions justify-center mt-6">
571
- <a href="mailto:void@passivequeue.io" class="btn btn-outline btn-wide">Contact Sales</a>
571
+ <a href="mailto:maciej@mensfeld.pl" class="btn btn-outline btn-wide">Contact Sales</a>
572
572
  </div>
573
573
  </div>
574
574
  </div>
@@ -1,27 +1,50 @@
1
1
  module PassiveQueue
2
+ # ActiveJob queue adapter that accepts jobs but never processes them.
3
+ # Implements the ActiveJob adapter interface with zen-like non-execution.
2
4
  class Adapter
5
+ # Initializes a new Adapter instance with the zen of doing nothing
3
6
  def initialize
4
7
  # Initialize with the zen of doing nothing
5
8
  end
6
9
 
10
+ # Enqueues a job for immediate non-execution
11
+ #
12
+ # @param job [ActiveJob::Base] the job to passively accept
13
+ # @return [void]
7
14
  def enqueue(job)
8
15
  log_job_acceptance(job)
9
16
  end
10
17
 
18
+ # Enqueues a job for delayed non-execution at a specific time
19
+ #
20
+ # @param job [ActiveJob::Base] the job to schedule for non-execution
21
+ # @param timestamp [Numeric] Unix timestamp when the job should not be executed
22
+ # @return [void]
11
23
  def enqueue_at(job, timestamp)
12
24
  log_job_scheduling(job, timestamp)
13
25
  end
14
26
 
27
+ # Enqueues multiple jobs for batch non-execution
28
+ #
29
+ # @param jobs [Array<ActiveJob::Base>] array of jobs to passively accept
30
+ # @return [Array<void>] results of enqueueing each job
15
31
  def enqueue_all(jobs)
16
32
  jobs.map { |job| enqueue(job) }
17
33
  end
18
34
 
35
+ # Returns whether the adapter is stopping (always true for zen purposes)
36
+ #
37
+ # @return [Boolean] always returns true to maintain peaceful state
19
38
  def stopping?
20
39
  true
21
40
  end
22
41
 
23
42
  private
24
43
 
44
+ # Logs acceptance of a job with zen messaging
45
+ #
46
+ # @param job [ActiveJob::Base] the job being accepted
47
+ # @return [void]
25
48
  def log_job_acceptance(job)
26
49
  return if PassiveQueue.configuration.silence_mode
27
50
 
@@ -31,6 +54,11 @@ module PassiveQueue
31
54
  puts " Status: Successfully not processed ✨"
32
55
  end
33
56
 
57
+ # Logs scheduling of a job with philosophical messaging
58
+ #
59
+ # @param job [ActiveJob::Base] the job being scheduled
60
+ # @param timestamp [Numeric] Unix timestamp for scheduled non-execution
61
+ # @return [void]
34
62
  def log_job_scheduling(job, timestamp)
35
63
  return if PassiveQueue.configuration.silence_mode
36
64
 
@@ -2,11 +2,20 @@
2
2
  # lib/passive_queue/cli.rb
3
3
  # ================================
4
4
  module PassiveQueue
5
+ # Command-line interface for PassiveQueue meditation and zen commands
5
6
  class CLI
7
+ # Entry point for the CLI application
8
+ #
9
+ # @param args [Array<String>] command-line arguments
10
+ # @return [void]
6
11
  def self.start(args)
7
12
  new.run(args)
8
13
  end
9
14
 
15
+ # Runs the CLI with provided arguments
16
+ #
17
+ # @param args [Array<String>] command-line arguments to process
18
+ # @return [void]
10
19
  def run(args)
11
20
  # Parse arguments manually (no Thor dependency)
12
21
  options = parse_args(args)
@@ -25,6 +34,10 @@ module PassiveQueue
25
34
 
26
35
  private
27
36
 
37
+ # Parses command-line arguments into an options hash
38
+ #
39
+ # @param args [Array<String>] raw command-line arguments
40
+ # @return [Hash] parsed options with zen, philosophical, aggressive, and duration keys
28
41
  def parse_args(args)
29
42
  options = {
30
43
  zen: false,
@@ -49,6 +62,14 @@ module PassiveQueue
49
62
  options
50
63
  end
51
64
 
65
+ # Executes the passive meditation command
66
+ #
67
+ # @param options [Hash] parsed command-line options
68
+ # @option options [Boolean] :zen enable zen quotes during meditation
69
+ # @option options [Boolean] :philosophical enable philosophical thoughts
70
+ # @option options [Boolean] :aggressive aggressively passive mode (not recommended)
71
+ # @option options [Numeric] :duration meditation duration in seconds
72
+ # @return [void]
52
73
  def passive_command(options)
53
74
  if options[:aggressive]
54
75
  puts "❌ Error: Don't be aggressive! The path of the passive queue is one of peace."
@@ -79,6 +100,13 @@ module PassiveQueue
79
100
  puts " Your passive queue energy has been restored."
80
101
  end
81
102
 
103
+ # Meditates with zen quotes or philosophical thoughts
104
+ #
105
+ # @param duration [Numeric] meditation duration in seconds
106
+ # @param options [Hash] options hash containing zen or philosophical flags
107
+ # @option options [Boolean] :zen enable zen quotes during meditation
108
+ # @option options [Boolean] :philosophical enable philosophical thoughts
109
+ # @return [void]
82
110
  def meditate_with_wisdom(duration, options)
83
111
  interval = duration / 3.0
84
112
 
@@ -94,6 +122,10 @@ module PassiveQueue
94
122
  end
95
123
  end
96
124
 
125
+ # Meditates silently with animated dots
126
+ #
127
+ # @param duration [Numeric] meditation duration in seconds
128
+ # @return [void]
97
129
  def meditate_silently(duration)
98
130
  print " Meditating"
99
131
 
@@ -112,6 +144,9 @@ module PassiveQueue
112
144
  end
113
145
  end
114
146
 
147
+ # Displays help information for the CLI
148
+ #
149
+ # @return [void]
115
150
  def show_help
116
151
  puts <<~HELP
117
152
  Passive Queue CLI - The zen of non-productivity
@@ -2,9 +2,21 @@
2
2
  # lib/passive_queue/configuration.rb
3
3
  # ================================
4
4
  module PassiveQueue
5
+ # Configuration settings for PassiveQueue behavior and aesthetics
5
6
  class Configuration
6
- attr_accessor :meditation_duration, :zen_level, :philosophical_depth, :silence_mode
7
+ # @return [Integer] meditation duration in seconds
8
+ attr_accessor :meditation_duration
7
9
 
10
+ # @return [Symbol] current zen level (:low, :medium, :high, :transcendent)
11
+ attr_accessor :zen_level
12
+
13
+ # @return [Symbol] philosophical depth (:shallow, :deep, :profound, :existential)
14
+ attr_accessor :philosophical_depth
15
+
16
+ # @return [Boolean] whether to suppress output logging
17
+ attr_accessor :silence_mode
18
+
19
+ # Initializes configuration with default zen values
8
20
  def initialize
9
21
  @meditation_duration = 5 # seconds
10
22
  @zen_level = :medium
@@ -12,10 +24,16 @@ module PassiveQueue
12
24
  @silence_mode = false
13
25
  end
14
26
 
27
+ # Returns available zen levels
28
+ #
29
+ # @return [Array<Symbol>] valid zen level options
15
30
  def zen_levels
16
31
  %i[low medium high transcendent]
17
32
  end
18
33
 
34
+ # Returns available philosophical depth levels
35
+ #
36
+ # @return [Array<Symbol>] valid philosophical depth options
19
37
  def philosophical_depths
20
38
  %i[shallow deep profound existential]
21
39
  end
@@ -1,18 +1,23 @@
1
1
  # ================================
2
- # lib/passive_queue/engine.rb
2
+ # lib/passive_queue/engine.rb
3
3
  # ================================
4
4
  module PassiveQueue
5
+ # Rack engine that mounts the PassiveQueue web dashboard in Rails applications
5
6
  class Engine
7
+ # Rack call method that delegates to the Web application
8
+ #
9
+ # @param env [Hash] Rack environment hash
10
+ # @return [Array] Rack response triplet [status, headers, body]
6
11
  def self.call(env)
7
12
  # Strip the mount path to get relative path
8
13
  path_info = env['PATH_INFO']
9
14
  script_name = env['SCRIPT_NAME']
10
-
15
+
11
16
  # Create new env with adjusted paths for the Web app
12
17
  web_env = env.dup
13
18
  web_env['PATH_INFO'] = path_info
14
19
  web_env['SCRIPT_NAME'] = script_name
15
-
20
+
16
21
  Web.new.call(web_env)
17
22
  end
18
23
  end
@@ -3,5 +3,5 @@
3
3
  # ================================
4
4
  module PassiveQueue
5
5
  # 1.0 so stable and production ready
6
- VERSION = "1.0.0"
6
+ VERSION = "1.1.1"
7
7
  end
@@ -5,7 +5,12 @@ require 'erb'
5
5
  require 'json'
6
6
 
7
7
  module PassiveQueue
8
+ # Rack web application providing a dashboard interface for PassiveQueue
8
9
  class Web
10
+ # Rack call method that routes requests to appropriate handlers
11
+ #
12
+ # @param env [Hash] Rack environment hash
13
+ # @return [Array] Rack response triplet [status, headers, body]
9
14
  def call(env)
10
15
  request = Rack::Request.new(env)
11
16
 
@@ -29,11 +34,17 @@ module PassiveQueue
29
34
 
30
35
  private
31
36
 
37
+ # Renders the main dashboard HTML page
38
+ #
39
+ # @return [Array] Rack response with HTML dashboard
32
40
  def dashboard_response
33
41
  html = dashboard_html
34
42
  [200, {'Content-Type' => 'text/html'}, [html]]
35
43
  end
36
44
 
45
+ # Returns JSON response with queue statistics
46
+ #
47
+ # @return [Array] Rack response with JSON stats data
37
48
  def api_stats_response
38
49
  stats = {
39
50
  jobs_queued: rand(9999..99999),
@@ -51,45 +62,72 @@ module PassiveQueue
51
62
  [200, {'Content-Type' => 'application/json'}, [stats.to_json]]
52
63
  end
53
64
 
65
+ # Returns JSON response with a random zen quote
66
+ #
67
+ # @return [Array] Rack response with JSON zen quote
54
68
  def api_zen_response
55
69
  quote = PassiveQueue.zen_quotes.sample
56
70
  [200, {'Content-Type' => 'application/json'}, [{quote: quote}.to_json]]
57
71
  end
58
72
 
73
+ # Returns CSS stylesheet response (unused method)
74
+ #
75
+ # @return [Array] Rack response with CSS content
59
76
  def css_response
60
77
  css = dashboard_css
61
78
  [200, {'Content-Type' => 'text/css'}, [css]]
62
79
  end
63
80
 
81
+ # Returns the light theme logo SVG
82
+ #
83
+ # @return [Array] Rack response with SVG logo
64
84
  def logo_response
65
85
  svg = logo_svg
66
86
  [200, {'Content-Type' => 'image/svg+xml'}, [svg]]
67
87
  end
68
88
 
89
+ # Returns the dark theme logo SVG
90
+ #
91
+ # @return [Array] Rack response with dark theme SVG logo
69
92
  def logo_dark_response
70
93
  svg = logo_svg_dark
71
94
  [200, {'Content-Type' => 'image/svg+xml'}, [svg]]
72
95
  end
73
96
 
97
+ # Returns an empty favicon response
98
+ #
99
+ # @return [Array] Rack response with empty favicon
74
100
  def favicon_response
75
101
  # Return empty response for favicon
76
102
  [200, {'Content-Type' => 'image/x-icon'}, ['']]
77
103
  end
78
104
 
105
+ # Returns a 404 not found response with zen humor
106
+ #
107
+ # @return [Array] Rack response with 404 HTML
79
108
  def not_found_response
80
109
  [404, {'Content-Type' => 'text/html'}, ['<h1>404 - Page Not Found (Just Like Our Jobs)</h1>']]
81
110
  end
82
111
 
112
+ # Reads and returns the light theme logo SVG content
113
+ #
114
+ # @return [String] SVG file contents
83
115
  def logo_svg
84
116
  logo_path = File.join(File.dirname(__FILE__), '..', '..', 'html', 'logo.svg')
85
117
  File.read(logo_path)
86
118
  end
87
119
 
120
+ # Reads and returns the dark theme logo SVG content
121
+ #
122
+ # @return [String] dark theme SVG file contents
88
123
  def logo_svg_dark
89
124
  logo_path = File.join(File.dirname(__FILE__), '..', '..', 'html', 'logo-dark.svg')
90
125
  File.read(logo_path)
91
126
  end
92
127
 
128
+ # Generates and returns the complete dashboard HTML
129
+ #
130
+ # @return [String] HTML content for the dashboard page
93
131
  def dashboard_html
94
132
  <<~HTML
95
133
  <!DOCTYPE html>
data/lib/passive_queue.rb CHANGED
@@ -9,17 +9,36 @@ require "passive_queue/web"
9
9
  require "passive_queue/engine"
10
10
  require "active_job/queue_adapters/passive_queue_adapter"
11
11
 
12
+ # PassiveQueue is a Rails queue adapter that embraces the zen of non-productivity.
13
+ # It accepts all jobs but executes none, achieving perfect reliability through strategic non-action.
12
14
  module PassiveQueue
15
+ # Base error class for PassiveQueue-related errors
13
16
  class Error < StandardError; end
14
17
 
18
+ # Returns the current PassiveQueue configuration instance
19
+ #
20
+ # @return [Configuration] the configuration instance
15
21
  def self.configuration
16
22
  @configuration ||= Configuration.new
17
23
  end
18
24
 
25
+ # Configures PassiveQueue with a block
26
+ #
27
+ # @yield [Configuration] the configuration instance
28
+ # @return [void]
29
+ #
30
+ # @example
31
+ # PassiveQueue.configure do |config|
32
+ # config.zen_level = :transcendent
33
+ # config.silence_mode = true
34
+ # end
19
35
  def self.configure
20
36
  yield(configuration)
21
37
  end
22
38
 
39
+ # Returns an array of zen quotes about passive processing
40
+ #
41
+ # @return [Array<String>] collection of zen wisdom
23
42
  def self.zen_quotes
24
43
  [
25
44
  "The best job is the one never executed.",
@@ -35,6 +54,9 @@ module PassiveQueue
35
54
  ]
36
55
  end
37
56
 
57
+ # Returns an array of philosophical thoughts about job processing
58
+ #
59
+ # @return [Array<String>] collection of deep philosophical reflections
38
60
  def self.philosophical_thoughts
39
61
  [
40
62
  "If a job is scheduled but never runs, did it ever really exist?",
data/package-lock.json ADDED
@@ -0,0 +1,331 @@
1
+ {
2
+ "name": "passive_queue",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "passive_queue",
9
+ "version": "1.0.0",
10
+ "devDependencies": {
11
+ "lostconf": "0.4.0"
12
+ }
13
+ },
14
+ "node_modules/@nodelib/fs.scandir": {
15
+ "version": "2.1.5",
16
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
17
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
18
+ "dev": true,
19
+ "license": "MIT",
20
+ "dependencies": {
21
+ "@nodelib/fs.stat": "2.0.5",
22
+ "run-parallel": "^1.1.9"
23
+ },
24
+ "engines": {
25
+ "node": ">= 8"
26
+ }
27
+ },
28
+ "node_modules/@nodelib/fs.stat": {
29
+ "version": "2.0.5",
30
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
31
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
32
+ "dev": true,
33
+ "license": "MIT",
34
+ "engines": {
35
+ "node": ">= 8"
36
+ }
37
+ },
38
+ "node_modules/@nodelib/fs.walk": {
39
+ "version": "1.2.8",
40
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
41
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
42
+ "dev": true,
43
+ "license": "MIT",
44
+ "dependencies": {
45
+ "@nodelib/fs.scandir": "2.1.5",
46
+ "fastq": "^1.6.0"
47
+ },
48
+ "engines": {
49
+ "node": ">= 8"
50
+ }
51
+ },
52
+ "node_modules/braces": {
53
+ "version": "3.0.3",
54
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
55
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
56
+ "dev": true,
57
+ "license": "MIT",
58
+ "dependencies": {
59
+ "fill-range": "^7.1.1"
60
+ },
61
+ "engines": {
62
+ "node": ">=8"
63
+ }
64
+ },
65
+ "node_modules/chalk": {
66
+ "version": "5.6.2",
67
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
68
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
69
+ "dev": true,
70
+ "license": "MIT",
71
+ "engines": {
72
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
73
+ },
74
+ "funding": {
75
+ "url": "https://github.com/chalk/chalk?sponsor=1"
76
+ }
77
+ },
78
+ "node_modules/commander": {
79
+ "version": "12.1.0",
80
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
81
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
82
+ "dev": true,
83
+ "license": "MIT",
84
+ "engines": {
85
+ "node": ">=18"
86
+ }
87
+ },
88
+ "node_modules/fast-glob": {
89
+ "version": "3.3.3",
90
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
91
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
92
+ "dev": true,
93
+ "license": "MIT",
94
+ "dependencies": {
95
+ "@nodelib/fs.stat": "^2.0.2",
96
+ "@nodelib/fs.walk": "^1.2.3",
97
+ "glob-parent": "^5.1.2",
98
+ "merge2": "^1.3.0",
99
+ "micromatch": "^4.0.8"
100
+ },
101
+ "engines": {
102
+ "node": ">=8.6.0"
103
+ }
104
+ },
105
+ "node_modules/fastq": {
106
+ "version": "1.20.1",
107
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
108
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
109
+ "dev": true,
110
+ "license": "ISC",
111
+ "dependencies": {
112
+ "reusify": "^1.0.4"
113
+ }
114
+ },
115
+ "node_modules/fill-range": {
116
+ "version": "7.1.1",
117
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
118
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
119
+ "dev": true,
120
+ "license": "MIT",
121
+ "dependencies": {
122
+ "to-regex-range": "^5.0.1"
123
+ },
124
+ "engines": {
125
+ "node": ">=8"
126
+ }
127
+ },
128
+ "node_modules/glob-parent": {
129
+ "version": "5.1.2",
130
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
131
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
132
+ "dev": true,
133
+ "license": "ISC",
134
+ "dependencies": {
135
+ "is-glob": "^4.0.1"
136
+ },
137
+ "engines": {
138
+ "node": ">= 6"
139
+ }
140
+ },
141
+ "node_modules/is-extglob": {
142
+ "version": "2.1.1",
143
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
144
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
145
+ "dev": true,
146
+ "license": "MIT",
147
+ "engines": {
148
+ "node": ">=0.10.0"
149
+ }
150
+ },
151
+ "node_modules/is-glob": {
152
+ "version": "4.0.3",
153
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
154
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
155
+ "dev": true,
156
+ "license": "MIT",
157
+ "dependencies": {
158
+ "is-extglob": "^2.1.1"
159
+ },
160
+ "engines": {
161
+ "node": ">=0.10.0"
162
+ }
163
+ },
164
+ "node_modules/is-number": {
165
+ "version": "7.0.0",
166
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
167
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
168
+ "dev": true,
169
+ "license": "MIT",
170
+ "engines": {
171
+ "node": ">=0.12.0"
172
+ }
173
+ },
174
+ "node_modules/lostconf": {
175
+ "version": "0.4.0",
176
+ "resolved": "https://registry.npmjs.org/lostconf/-/lostconf-0.4.0.tgz",
177
+ "integrity": "sha512-VNbUnirRU7uESqMHslIRHTcuyx/rr4OZK+L7EQXtYUe5PorBgqBYvPu+6xOr0CoUy4n34NNUKO6BBH6TgwwGTA==",
178
+ "dev": true,
179
+ "license": "MIT",
180
+ "dependencies": {
181
+ "chalk": "^5.3.0",
182
+ "commander": "^12.1.0",
183
+ "fast-glob": "^3.3.2",
184
+ "micromatch": "^4.0.8",
185
+ "smol-toml": "^1.3.0",
186
+ "yaml": "^2.5.0"
187
+ },
188
+ "bin": {
189
+ "lostconf": "dist/cli.js"
190
+ },
191
+ "engines": {
192
+ "node": ">=18.0.0"
193
+ }
194
+ },
195
+ "node_modules/merge2": {
196
+ "version": "1.4.1",
197
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
198
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
199
+ "dev": true,
200
+ "license": "MIT",
201
+ "engines": {
202
+ "node": ">= 8"
203
+ }
204
+ },
205
+ "node_modules/micromatch": {
206
+ "version": "4.0.8",
207
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
208
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
209
+ "dev": true,
210
+ "license": "MIT",
211
+ "dependencies": {
212
+ "braces": "^3.0.3",
213
+ "picomatch": "^2.3.1"
214
+ },
215
+ "engines": {
216
+ "node": ">=8.6"
217
+ }
218
+ },
219
+ "node_modules/picomatch": {
220
+ "version": "2.3.1",
221
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
222
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
223
+ "dev": true,
224
+ "license": "MIT",
225
+ "engines": {
226
+ "node": ">=8.6"
227
+ },
228
+ "funding": {
229
+ "url": "https://github.com/sponsors/jonschlinkert"
230
+ }
231
+ },
232
+ "node_modules/queue-microtask": {
233
+ "version": "1.2.3",
234
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
235
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
236
+ "dev": true,
237
+ "funding": [
238
+ {
239
+ "type": "github",
240
+ "url": "https://github.com/sponsors/feross"
241
+ },
242
+ {
243
+ "type": "patreon",
244
+ "url": "https://www.patreon.com/feross"
245
+ },
246
+ {
247
+ "type": "consulting",
248
+ "url": "https://feross.org/support"
249
+ }
250
+ ],
251
+ "license": "MIT"
252
+ },
253
+ "node_modules/reusify": {
254
+ "version": "1.1.0",
255
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
256
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
257
+ "dev": true,
258
+ "license": "MIT",
259
+ "engines": {
260
+ "iojs": ">=1.0.0",
261
+ "node": ">=0.10.0"
262
+ }
263
+ },
264
+ "node_modules/run-parallel": {
265
+ "version": "1.2.0",
266
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
267
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
268
+ "dev": true,
269
+ "funding": [
270
+ {
271
+ "type": "github",
272
+ "url": "https://github.com/sponsors/feross"
273
+ },
274
+ {
275
+ "type": "patreon",
276
+ "url": "https://www.patreon.com/feross"
277
+ },
278
+ {
279
+ "type": "consulting",
280
+ "url": "https://feross.org/support"
281
+ }
282
+ ],
283
+ "license": "MIT",
284
+ "dependencies": {
285
+ "queue-microtask": "^1.2.2"
286
+ }
287
+ },
288
+ "node_modules/smol-toml": {
289
+ "version": "1.6.0",
290
+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz",
291
+ "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==",
292
+ "dev": true,
293
+ "license": "BSD-3-Clause",
294
+ "engines": {
295
+ "node": ">= 18"
296
+ },
297
+ "funding": {
298
+ "url": "https://github.com/sponsors/cyyynthia"
299
+ }
300
+ },
301
+ "node_modules/to-regex-range": {
302
+ "version": "5.0.1",
303
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
304
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
305
+ "dev": true,
306
+ "license": "MIT",
307
+ "dependencies": {
308
+ "is-number": "^7.0.0"
309
+ },
310
+ "engines": {
311
+ "node": ">=8.0"
312
+ }
313
+ },
314
+ "node_modules/yaml": {
315
+ "version": "2.8.2",
316
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
317
+ "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
318
+ "dev": true,
319
+ "license": "ISC",
320
+ "bin": {
321
+ "yaml": "bin.mjs"
322
+ },
323
+ "engines": {
324
+ "node": ">= 14.6"
325
+ },
326
+ "funding": {
327
+ "url": "https://github.com/sponsors/eemeli"
328
+ }
329
+ }
330
+ }
331
+ }
data/package.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "passive_queue",
3
+ "version": "1.0.0",
4
+ "description": "CI dependencies for passive_queue",
5
+ "private": true,
6
+ "devDependencies": {
7
+ "lostconf": "0.4.0"
8
+ }
9
+ }
@@ -0,0 +1,28 @@
1
+ require_relative "lib/passive_queue/version"
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "passive_queue"
5
+ spec.version = PassiveQueue::VERSION
6
+ spec.authors = ["Maciej Mensfeld"]
7
+ spec.email = ["maciej@mensfeld.pl"]
8
+
9
+ spec.summary = "A Rails queue adapter that embraces the zen of non-productivity"
10
+ spec.description = "Rails queue adapter for mindful developers. Accepts all jobs, executes none. Perfect reliability through strategic non-action."
11
+ spec.homepage = "https://github.com/mensfeld/passive_queue"
12
+ spec.license = "MIT"
13
+ spec.required_ruby_version = ">= 3.3.0"
14
+
15
+ spec.metadata["homepage_uri"] = "https://github.com/mensfeld/passive_queue"
16
+ spec.metadata["source_code_uri"] = "https://github.com/mensfeld/passive_queue"
17
+ spec.metadata["changelog_uri"] = "https://github.com/mensfeld/passive_queue/blob/main/CHANGELOG.md"
18
+
19
+ spec.files = Dir.chdir(__dir__) do
20
+ `git ls-files -z`.split("\x0").reject do |f|
21
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
22
+ end
23
+ end
24
+
25
+ spec.executables = ['be']
26
+ spec.require_paths = ["lib"]
27
+ # NO runtime dependencies - true zen has no dependencies
28
+ end
data/renovate.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
+ "extends": [
4
+ "config:recommended"
5
+ ],
6
+ "minimumReleaseAge": "7 days",
7
+ "github-actions": {
8
+ "enabled": true,
9
+ "pinDigests": true
10
+ },
11
+ "includePaths": [
12
+ ".ruby-version",
13
+ "Gemfile",
14
+ "Gemfile.lint",
15
+ "passive_queue.gemspec",
16
+ ".github/workflows/**",
17
+ "package.json"
18
+ ],
19
+ "packageRules": [
20
+ {
21
+ "description": "Group ruby/setup-ruby action with ruby version updates",
22
+ "matchPackageNames": [
23
+ "ruby/setup-ruby",
24
+ "ruby"
25
+ ],
26
+ "groupName": "ruby setup",
27
+ "internalChecksFilter": "strict"
28
+ }
29
+ ],
30
+ "labels": [
31
+ "dependencies"
32
+ ],
33
+ "lockFileMaintenance": {
34
+ "enabled": true
35
+ }
36
+ }
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: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -12,17 +12,22 @@ dependencies: []
12
12
  description: Rails queue adapter for mindful developers. Accepts all jobs, executes
13
13
  none. Perfect reliability through strategic non-action.
14
14
  email:
15
- - void@passivequeue.pro
15
+ - maciej@mensfeld.pl
16
16
  executables:
17
17
  - be
18
18
  extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
+ - ".ruby-version"
22
+ - ".yard-lint.yml"
21
23
  - CHANGELOG.md
22
24
  - Gemfile
25
+ - Gemfile.lint
26
+ - Gemfile.lint.lock
23
27
  - Gemfile.lock
24
28
  - LICENSE
25
29
  - README.md
30
+ - Rakefile
26
31
  - bin/be
27
32
  - html/index.html
28
33
  - html/logo-dark.svg
@@ -37,11 +42,15 @@ files:
37
42
  - lib/passive_queue/railtie.rb
38
43
  - lib/passive_queue/version.rb
39
44
  - lib/passive_queue/web.rb
40
- homepage: https://passivequeue.pro
45
+ - package-lock.json
46
+ - package.json
47
+ - passive_queue.gemspec
48
+ - renovate.json
49
+ homepage: https://github.com/mensfeld/passive_queue
41
50
  licenses:
42
51
  - MIT
43
52
  metadata:
44
- homepage_uri: https://passivequeue.pro
53
+ homepage_uri: https://github.com/mensfeld/passive_queue
45
54
  source_code_uri: https://github.com/mensfeld/passive_queue
46
55
  changelog_uri: https://github.com/mensfeld/passive_queue/blob/main/CHANGELOG.md
47
56
  rdoc_options: []
@@ -51,14 +60,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
51
60
  requirements:
52
61
  - - ">="
53
62
  - !ruby/object:Gem::Version
54
- version: 3.1.0
63
+ version: 3.3.0
55
64
  required_rubygems_version: !ruby/object:Gem::Requirement
56
65
  requirements:
57
66
  - - ">="
58
67
  - !ruby/object:Gem::Version
59
68
  version: '0'
60
69
  requirements: []
61
- rubygems_version: 3.6.7
70
+ rubygems_version: 4.0.10
62
71
  specification_version: 4
63
72
  summary: A Rails queue adapter that embraces the zen of non-productivity
64
73
  test_files: []