sidekiq-deferred_jobs 1.0.0 → 1.0.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: 74140b3a7726b81f99deb8eee4f6b12cbe306a89fc47ee7c1f9c1498b6b39588
4
- data.tar.gz: aefb420df0176f907074fdbce0a1a6c40f85209b5143ae41342f2cc78ddcf66a
3
+ metadata.gz: e4232cb827ec1a6bd2f218f34ac5b7f3a0b175a0a4dd34841633605d669bfb16
4
+ data.tar.gz: 3db11095242ca521612cae0b91e1b20abf5fb0676b5fa8f75d0220ab9fa8e8c6
5
5
  SHA512:
6
- metadata.gz: fd4ef0a5ead779291359d18c8388ddc5fa1ee8a5615bf4e1d11add7f0ed605919979380cba966ed8c8422e35d03e4d5910470c405145f31c1f5d299a7e07747e
7
- data.tar.gz: f1ea50c549baea07d8b8388455c948d052060ee7e68effe12e85e261aa1b6c330702819b84c42ecfa4d11b95a4c7af74bf031d154a372f097461342b6c3f002a
6
+ metadata.gz: 2d8f9ebdad90e5641e6d96c8356ce83e9aad680203f51eb3f0ca933a5d2384f5a52c29d55af0b1fb51ee5e67de9e9a51e085408ce2e56be90b834d95ffdf7279
7
+ data.tar.gz: 6ee5fc3e3a76a7cd4e7fd96d642fab6664a831d5801240fb0614fe03738f43c0ab6108628478191a9f9a3cd231b7d6dffeb4e9c2d25ba76cd917c19b14223090
data/CHANGELOG.md CHANGED
@@ -4,7 +4,14 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 1.0.1
8
+
9
+ ### Changed
10
+
11
+ - Update code to override Sidekiq::Job if it is defined, otherwise override Sidekiq::Worker. This doesn't impact functionality, but is more compatible with modern Sidekiq versions since Sidekiq::Worker is discouraged since version 6.3.
12
+
7
13
  ## 1.0.0
8
14
 
9
15
  ### Added
16
+
10
17
  - Add behavior to Sidekiq to allow deferring enqueing jobs until after a block of code finishes.
data/README.md CHANGED
@@ -1,9 +1,8 @@
1
+ # Sidekiq Deferred Jobs
2
+
1
3
  [![Continuous Integration](https://github.com/bdurand/sidekiq-deferred_jobs/actions/workflows/continuous_integration.yml/badge.svg)](https://github.com/bdurand/sidekiq-deferred_jobs/actions/workflows/continuous_integration.yml)
2
- [![Maintainability](https://api.codeclimate.com/v1/badges/3f5fb49ca1d03f698d5b/maintainability)](https://codeclimate.com/github/bdurand/sidekiq-deferred_jobs/maintainability)
3
- [![Test Coverage](https://api.codeclimate.com/v1/badges/3f5fb49ca1d03f698d5b/test_coverage)](https://codeclimate.com/github/bdurand/sidekiq-deferred_jobs/test_coverage)
4
4
  [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
5
-
6
- # Sidekiq Deferred Jobs
5
+ [![Gem Version](https://badge.fury.io/rb/sidekiq-deferred_jobs.svg)](https://badge.fury.io/rb/sidekiq-deferred_jobs)
7
6
 
8
7
  This gem provides an enhancement to [Sidekiq](https://github.com/mperham/sidekiq) to defer enqueuing jobs until the end of a block of code. This is useful in situations where you need to better coordinate when jobs are enqueued to guard against race conditions or deduplicate jobs. In most cases, this provides no functional difference to your code; it just delays slightly when jobs are enqueued.
9
8
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.0.1
@@ -8,6 +8,7 @@ module Sidekiq
8
8
  # Defer enqueuing Sidekiq workers within the block until the end of the block.
9
9
  # Any workers that normally would have been enqueued with a `perform_async` call
10
10
  # will instead be queued up and run in an ensure clause at the end of the block.
11
+ #
11
12
  # @param filter [Array<Module>, Array<Hash>] An array of either classes, modules, or hashes.
12
13
  # If this is provided, only workers that match either a class or module or which have
13
14
  # sidekiq_options that match a hash will be deferred. All other worker will be enqueued as normal.
@@ -33,6 +34,7 @@ module Sidekiq
33
34
 
34
35
  # Disable deferred workers within the block. All workers will be enqueued normally
35
36
  # within the block.
37
+ #
36
38
  # @return [void]
37
39
  def undeferred(&block)
38
40
  save_val = Thread.current[:sidekiq_deferred_jobs_jobs]
@@ -45,6 +47,7 @@ module Sidekiq
45
47
  end
46
48
 
47
49
  # Return true if the specified class with optional options should be deferred.
50
+ #
48
51
  # @param klass [Class] A Sidekiq worker class
49
52
  # @param opts [Hash, Nil] Optionsl options set at runtime for the worker.
50
53
  # @return Boolean
@@ -55,6 +58,7 @@ module Sidekiq
55
58
  end
56
59
 
57
60
  # Schedule a worker to be run at the end of the outermost defer block.
61
+ #
58
62
  # @param klass [Class] Sidekiq worker class
59
63
  # @param args [Array] Sidekiq job arguments
60
64
  # @param opts [Hash, Nil] Optional sidekiq options specified for the job
@@ -73,7 +77,8 @@ module Sidekiq
73
77
  # Defer enqueuing Sidekiq workers within the block until the end of the block.
74
78
  # Any workers that normally would have been enqueued with a `perform_async` call
75
79
  # will instead be queued up and run in an ensure clause at the end of the block.
76
- # @param *filter [Module>, Hash, FalseClass] Optional filter on which workers should be deferred.
80
+ #
81
+ # @param filter [Array<Module>, Hash, false] Optional filter on which workers should be deferred.
77
82
  # If a filter is specified, only matching workers will be deferred. To match the
78
83
  # filter, the worker must either be the class specfied or include the module or
79
84
  # have sidekiq_options that match the specified hash. If the filter is `false`
@@ -89,7 +94,8 @@ module Sidekiq
89
94
 
90
95
  # Abort any already deferred Sidkiq workers in the current `defer_job` block.
91
96
  # If a filter is specified, then only matching Sidekiq jobs will be aborted.
92
- # @param *filter See #defer_job for filter specification.
97
+ #
98
+ # @param filter [Array<Module>, Hash, false] See #defer_job for filter specification.
93
99
  # @return [Array<Sidekiq::DeferredJobs::Job>] the jobs that were aborted
94
100
  def abort_deferred_jobs!(*filter)
95
101
  jobs, _filters = Thread.current[:sidekiq_deferred_jobs_jobs]
@@ -102,7 +108,8 @@ module Sidekiq
102
108
 
103
109
  # Immediately enqueue any already deferred Sidkiq workers in the current `defer_job` block.
104
110
  # If a filter is specified, then only matching Sidekiq jobs will be enqueued.
105
- # @param *filter See #defer_job for filter specification.
111
+ #
112
+ # @param filter [Array<Module>, Hash, false] See #defer_job for filter specification.
106
113
  # @return [void]
107
114
  def enqueue_deferred_jobs!(*filter)
108
115
  jobs, _filters = Thread.current[:sidekiq_deferred_jobs_jobs]
@@ -167,15 +174,19 @@ module Sidekiq
167
174
  end
168
175
 
169
176
  # Add a job to the deferred job list.
177
+ #
170
178
  # @param klass [Class] Sidekiq worker class.
171
179
  # @param args [Array] Sidekiq job arguments
172
180
  # @param opts [Hash, Nil] optional runtime jobs options
181
+ # @return [void]
173
182
  def defer(klass, args, opts = nil)
174
183
  @jobs << Job.new(klass, args&.dup, opts&.dup)
175
184
  end
176
185
 
177
186
  # Clear any deferred jobs that match the filter.
178
- # @filter [Array<Module>, Array<Hash>] Filter for jobs to clear
187
+ #
188
+ # @param filters [Array<Module>, Array<Hash>] Filter for jobs to clear
189
+ # @return [Array<Sidekiq::DeferredJobs::Job>] the jobs that were cleared
179
190
  def clear!(filters = nil)
180
191
  filter = Filter.new(filters)
181
192
  cleared_jobs = @jobs.select { |job| filter.match?(job.klass, job.opts) }
@@ -184,7 +195,9 @@ module Sidekiq
184
195
  end
185
196
 
186
197
  # Enqueue any deferred jobs that match the filter.
187
- # @filter [Array<Module>, Array<Hash>] Filter for jobs to clear
198
+ #
199
+ # @param filters [Array<Module>, Array<Hash>] Filter for jobs to clear
200
+ # @return [void]
188
201
  def enqueue!(filters = nil)
189
202
  filter = Filter.new(filters)
190
203
  remaining_jobs = []
@@ -238,6 +251,4 @@ module Sidekiq
238
251
  end
239
252
  end
240
253
 
241
- Sidekiq.extend(Sidekiq::DeferredJobs::DeferBlock)
242
- Sidekiq::Worker::ClassMethods.prepend(Sidekiq::DeferredJobs::DeferredWorker)
243
- Sidekiq::Worker::Setter.prepend(Sidekiq::DeferredJobs::DeferredSetter)
254
+ require_relative "deferred_jobs_ext"
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file patches Sidekiq classes to add deferred job functionality.
4
+ # It's separate from the main file to avoid YARD documentation warnings
5
+ # for external gem classes.
6
+
7
+ Sidekiq.extend(Sidekiq::DeferredJobs::DeferBlock)
8
+
9
+ if defined?(Sidekiq::Job)
10
+ Sidekiq::Job::ClassMethods.prepend(Sidekiq::DeferredJobs::DeferredWorker)
11
+ Sidekiq::Job::Setter.prepend(Sidekiq::DeferredJobs::DeferredSetter)
12
+ else
13
+ Sidekiq::Worker::ClassMethods.prepend(Sidekiq::DeferredJobs::DeferredWorker)
14
+ Sidekiq::Worker::Setter.prepend(Sidekiq::DeferredJobs::DeferredSetter)
15
+ end
@@ -5,9 +5,16 @@ Gem::Specification.new do |spec|
5
5
  spec.email = ["bbdurand@gmail.com"]
6
6
 
7
7
  spec.summary = "Adds ability to defer the enqueuing of Sidekiq workers until the end of a block of code."
8
+
8
9
  spec.homepage = "https://github.com/bdurand/sidekiq-deferred_jobs"
9
10
  spec.license = "MIT"
10
11
 
12
+ spec.metadata = {
13
+ "homepage_uri" => spec.homepage,
14
+ "source_code_uri" => spec.homepage,
15
+ "changelog_uri" => "#{spec.homepage}/blob/main/CHANGELOG.md"
16
+ }
17
+
11
18
  # Specify which files should be added to the gem when it is released.
12
19
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
13
20
  ignore_files = %w[
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-deferred_jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Durand
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-08-30 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: sidekiq
@@ -38,7 +37,6 @@ dependencies:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
39
  version: '0'
41
- description:
42
40
  email:
43
41
  - bbdurand@gmail.com
44
42
  executables: []
@@ -46,17 +44,20 @@ extensions: []
46
44
  extra_rdoc_files: []
47
45
  files:
48
46
  - CHANGELOG.md
49
- - MIT-LICENSE
47
+ - MIT-LICENSE.txt
50
48
  - README.md
51
49
  - VERSION
52
50
  - lib/sidekiq-deferred_jobs.rb
53
51
  - lib/sidekiq/deferred_jobs.rb
52
+ - lib/sidekiq/deferred_jobs_ext.rb
54
53
  - sidekiq-deferred_jobs.gemspec
55
54
  homepage: https://github.com/bdurand/sidekiq-deferred_jobs
56
55
  licenses:
57
56
  - MIT
58
- metadata: {}
59
- post_install_message:
57
+ metadata:
58
+ homepage_uri: https://github.com/bdurand/sidekiq-deferred_jobs
59
+ source_code_uri: https://github.com/bdurand/sidekiq-deferred_jobs
60
+ changelog_uri: https://github.com/bdurand/sidekiq-deferred_jobs/blob/main/CHANGELOG.md
60
61
  rdoc_options: []
61
62
  require_paths:
62
63
  - lib
@@ -71,8 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
72
  - !ruby/object:Gem::Version
72
73
  version: '0'
73
74
  requirements: []
74
- rubygems_version: 3.0.3
75
- signing_key:
75
+ rubygems_version: 4.0.3
76
76
  specification_version: 4
77
77
  summary: Adds ability to defer the enqueuing of Sidekiq workers until the end of a
78
78
  block of code.
File without changes