sidekiq-delay_extensions 6.5.12 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea2160e6a5c9dae9597539c7039a681d8d7c1492d94358f1be763208193d5bae
4
- data.tar.gz: 21288840f7139bf8ad36c58cf2c268c04a222d0c53607a17b8f0047ec1321e68
3
+ metadata.gz: 95dda38ae3c61ad156898807a993f2e4ed94a1e9fa84e0acefc55e9eda8c563f
4
+ data.tar.gz: c01d2df0317cb993a90ea42edf54c8cd8555a47abc6e9fc5aeca30cd3c609970
5
5
  SHA512:
6
- metadata.gz: 02f9ee1f39dd1014f4b5ada0cf32355b7da24215b82a4f4609fbb810087729c8a317a57791f9f23289af33f731de59a426371a5ff60107c15edfef2a55c81e1d
7
- data.tar.gz: 00a453a9370cce59db23365969eb47788fd469eaf4c5d3a2f1de6895f4940048a054fb44e6a95c85baeb5c60412002bd340203384c6a3005475513fd0b67ed86
6
+ metadata.gz: c8ff4ae1215e5f1feb5b69c776711e9bdbd788d485d67f539e6b04aa47712149eff81f3a8148ad18fde812254107d1954754e67559847821cfd22cb414d64321
7
+ data.tar.gz: 1c829791c9f5c30a59fd236864f07d9e3ae635bd928bc4df8d25bce692b1323f0a8f851692d49cafac4da446b8c87b4f84d8d33fcfe8e8151201f5de7ade08a4
data/Changes.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Sidekiq Delay Extensions Changes
2
2
 
3
- [Sidekiq Changes](https://github.com/gemhome/sidekiq-delay_extensions/blob/main/Changes.md)
3
+ [See Sidekiq for its changes](https://github.com/mperham/sidekiq/blob/main/Changes.md)
4
+
5
+ 7.0.0
6
+ ---------
7
+
8
+ - Require Sidekiq >= 7.0
4
9
 
5
10
  6.5.12
6
11
  ---------
data/Gemfile CHANGED
@@ -2,31 +2,33 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem "sidekiq", "6.5.12"
5
+ gem "sidekiq", "~> 7.0"
6
6
  gem "rake"
7
- gem "redis"
8
- gem "redis-namespace"
7
+ RAILS_VERSION = "~> 7.0.4"
8
+ gem "actionmailer", RAILS_VERSION
9
+ gem "actionpack", RAILS_VERSION
10
+ gem "activejob", RAILS_VERSION
11
+ gem "activerecord", RAILS_VERSION
12
+ gem "railties", RAILS_VERSION
9
13
  gem "redis-client"
10
- gem "rails", "~> 6.0"
14
+ # gem "bumbler"
15
+ # gem "debug"
16
+
11
17
  gem "sqlite3", platforms: :ruby
12
18
  gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
13
- gem "after_commit_everywhere"
14
-
15
- # mail dependencies
16
- gem "net-smtp", platforms: :mri, require: false
19
+ gem "after_commit_everywhere", require: false
20
+ gem "yard"
17
21
 
18
22
  group :test do
19
- gem "minitest"
23
+ gem "maxitest"
20
24
  gem "simplecov"
21
- gem "codecov", require: false
22
25
  end
23
26
 
24
27
  group :development, :test do
25
28
  gem "standard", require: false
26
- gem "pry"
27
29
  end
28
30
 
29
31
  group :load_test do
30
- gem "hiredis"
31
32
  gem "toxiproxy"
33
+ gem "ruby-prof"
32
34
  end
data/README.md CHANGED
@@ -4,20 +4,20 @@ Sidekiq Delay Extensions
4
4
  [![Gem Version](https://badge.fury.io/rb/sidekiq-delay_extensions.svg)](https://rubygems.org/gems/sidekiq-delay_extensions)
5
5
  ![Build](https://github.com/gemhome/sidekiq-delay_extensions/workflows/CI/badge.svg)
6
6
 
7
- The [Sidekiq delay extensions are deprecated in 6.x and will be removed from 7.x](https://github.com/mperham/sidekiq/issues/5076).
7
+ The [Sidekiq delay extensions were deprecated in 6.x and were removed from 7.x](https://github.com/mperham/sidekiq/issues/5076).
8
8
 
9
- This gem extracts the delay extensions from the latest 6.x release and will match
10
- Sidekiq 6.x version numbers.
9
+ This gem extracts the delay extensions from the latest 6.x release, 6.5.12.
10
+ Version 7.x of this gem will maintain compatibility with Sidekiq 7.x.
11
11
 
12
- When Sidekiq reaches 7.0, this gem will begin being maintained on its own. Maintainers wanted.
12
+ This gem is maintained independent of Sidekiq. Maintainers wanted.
13
13
 
14
14
  Requirements
15
15
  -----------------
16
16
 
17
- - See https://github.com/mperham/sidekiq/tree/v6.5.12
18
- - Redis: 4.0+
19
- - Ruby: MRI 2.5+ or JRuby 9.2+.
20
- - Sidekiq 6.0 supports Rails 5.0+ but does not require it.
17
+ - See https://github.com/sidekiq/sidekiq/blob/main/Changes.md#700
18
+ - Redis: 6.2+
19
+ - Ruby: MRI 2.7+ or JRuby 9.3+.
20
+ - Sidekiq 7.0 supports Rails 6.0+ but does not require it.
21
21
 
22
22
  Installation
23
23
  -----------------
@@ -31,6 +31,7 @@ In your initializers, include the line:
31
31
 
32
32
  Upgrading (IMPORTANT): Also add
33
33
 
34
+ # To handle any existing delayed jobs at time of upgrade.
34
35
  Sidekiq::Extensions::DelayedClass = Sidekiq::DelayExtensions::DelayedClass
35
36
  Sidekiq::Extensions::DelayedModel = Sidekiq::DelayExtensions::DelayedModel
36
37
  Sidekiq::Extensions::DelayedMailer = Sidekiq::DelayExtensions::DelayedMailer
@@ -13,7 +13,7 @@ module Sidekiq
13
13
  # UserMailer.delay_for(5.days).send_welcome_email(new_user)
14
14
  # UserMailer.delay_until(5.days.from_now).send_welcome_email(new_user)
15
15
  class DelayedMailer
16
- include Sidekiq::Worker
16
+ include Sidekiq::Job
17
17
 
18
18
  def perform(yml)
19
19
  (target, method_name, args) = YAML.load(yml)
@@ -15,7 +15,7 @@ module Sidekiq
15
15
  # object to Redis. Your Sidekiq jobs should pass IDs, not entire instances.
16
16
  # This is here for backwards compatibility with Delayed::Job only.
17
17
  class DelayedModel
18
- include Sidekiq::Worker
18
+ include Sidekiq::Job
19
19
 
20
20
  def perform(yml)
21
21
  (target, method_name, args) = YAML.load(yml)
@@ -9,7 +9,7 @@ module Sidekiq
9
9
  # Unwrap known wrappers so they show up in a human-friendly manner in the Web UI
10
10
  @klass ||= self["display_class"] || begin
11
11
  case klass
12
- when /\ASidekiq::DelayExtensions::Delayed/
12
+ when /\ASidekiq::DelayExtensions::Delayed/, /\ASidekiq::Extensions::Delayed/
13
13
  safe_load(args[0], klass) do |target, method, _|
14
14
  "#{target}.#{method}"
15
15
  end
@@ -22,18 +22,33 @@ module Sidekiq
22
22
  def display_args
23
23
  # Unwrap known wrappers so they show up in a human-friendly manner in the Web UI
24
24
  @display_args ||= case klass
25
- when /\ASidekiq::DelayExtensions::Delayed/
26
- safe_load(args[0], args) do |_, _, arg, kwarg|
27
- if !kwarg || kwarg.empty?
28
- arg
29
- else
30
- [arg, kwarg]
31
- end
32
- end
33
- else
34
- super
25
+ when /\ASidekiq::DelayExtensions::Delayed/, /\ASidekiq::Extensions::Delayed/
26
+ safe_load(args[0], args) do |_, _, arg, kwarg|
27
+ if !kwarg || kwarg.empty?
28
+ arg
29
+ else
30
+ [arg, kwarg]
31
+ end
32
+ end
33
+ else
34
+ super
35
35
  end
36
36
  end
37
+
38
+ private
39
+
40
+ # per https://github.com/mperham/sidekiq/blob/v6.5.8/lib/sidekiq/api.rb#L492-L502
41
+ # vs.
42
+ # https://github.com/mperham/sidekiq/blob/v7.0.1/lib/sidekiq/api.rb#L374-L411
43
+ def safe_load(content, default)
44
+ yield(*YAML.load(content))
45
+ rescue => ex
46
+ # #1761 in dev mode, it's possible to have jobs enqueued which haven't been loaded into
47
+ # memory yet so the YAML can't be loaded.
48
+ # TODO is this still necessary? Zeitwerk reloader should handle?
49
+ Sidekiq.logger.warn "Unable to load YAML: #{ex.message}" unless Sidekiq.options[:environment] == "development"
50
+ default
51
+ end
37
52
  end
38
53
  end
39
54
  end
@@ -13,7 +13,7 @@ module Sidekiq
13
13
  # Wikipedia.delay.download_changes_for(Date.today)
14
14
  #
15
15
  class DelayedClass
16
- include Sidekiq::Worker
16
+ include Sidekiq::Job
17
17
 
18
18
  def perform(yml)
19
19
  (target, method_name, args) = YAML.load(yml)
@@ -3,6 +3,21 @@
3
3
  require "sidekiq/testing"
4
4
 
5
5
  module Sidekiq
6
- Sidekiq::DelayExtensions::DelayedMailer.extend(TestingExtensions) if defined?(Sidekiq::DelayExtensions::DelayedMailer)
7
- Sidekiq::DelayExtensions::DelayedModel.extend(TestingExtensions) if defined?(Sidekiq::DelayExtensions::DelayedModel)
6
+ module DelayedTestingExtensions
7
+ include TestingExtensions
8
+
9
+ # NOTE(BF): Extend Sidekiq::TestingExtensions
10
+ # to optionally handle unsafely loading YAML
11
+ # for delayed extensions in Sidekiq 7.x.
12
+ def jobs_for(klass, unsafe_load: false)
13
+ return super(klass) unless unsafe_load
14
+ jobs.select do |job|
15
+ marshalled = job["args"][0]
16
+ next unless marshalled.index(klass.to_s)
17
+ YAML.load(marshalled)
18
+ end
19
+ end
20
+ end
21
+ Sidekiq::DelayExtensions::DelayedMailer.extend(DelayedTestingExtensions) if defined?(Sidekiq::DelayExtensions::DelayedMailer)
22
+ Sidekiq::DelayExtensions::DelayedModel.extend(DelayedTestingExtensions) if defined?(Sidekiq::DelayExtensions::DelayedModel)
8
23
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sidekiq
4
4
  module DelayExtensions
5
- VERSION = "6.5.12"
5
+ VERSION = "7.0.0"
6
6
  end
7
7
  end
@@ -6,10 +6,10 @@ Gem::Specification.new do |spec|
6
6
  spec.name = "sidekiq-delay_extensions"
7
7
  spec.version = Sidekiq::DelayExtensions::VERSION
8
8
  spec.authors = ["Mike Perham", "Benjamin Fleischer"]
9
- spec.email = ["mperham@gmail.com", "github@benjaminfleischer.com"]
9
+ spec.email = ["info@contribsys.com", "github@benjaminfleischer.com"]
10
10
 
11
11
  spec.summary = "Sidekiq Delay Extensions"
12
- spec.description = "Extracted from Sidekiq 6.0"
12
+ spec.description = "Extracted from Sidekiq 6.0, compatible with Sidekiq 7.0"
13
13
  spec.homepage = "https://github.com/gemhome/sidekiq-delay_extensions/wiki/Delayed-extensions"
14
14
  spec.license = "LGPL-3.0"
15
15
 
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.bindir = "exe"
19
19
  spec.executables = []
20
20
  spec.require_paths = ["lib"]
21
- spec.required_ruby_version = ">= 2.5.0"
21
+ spec.required_ruby_version = ">= 2.7.0"
22
22
 
23
23
  spec.metadata = {
24
24
  "homepage_uri" => "https://github.com/gemhome/sidekiq-delay_extensions/wiki/Delayed-extensions",
@@ -28,5 +28,5 @@ Gem::Specification.new do |spec|
28
28
  "source_code_uri" => "https://github.com/gemhome/sidekiq-delay_extensions"
29
29
  }
30
30
 
31
- spec.add_dependency "sidekiq", ">= 6.5.12"
31
+ spec.add_dependency "sidekiq", ">= 7.0"
32
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-delay_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.5.12
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
@@ -17,17 +17,17 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 6.5.12
20
+ version: '7.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 6.5.12
28
- description: Extracted from Sidekiq 6.0
27
+ version: '7.0'
28
+ description: Extracted from Sidekiq 6.0, compatible with Sidekiq 7.0
29
29
  email:
30
- - mperham@gmail.com
30
+ - info@contribsys.com
31
31
  - github@benjaminfleischer.com
32
32
  executables: []
33
33
  extensions: []
@@ -63,7 +63,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - ">="
65
65
  - !ruby/object:Gem::Version
66
- version: 2.5.0
66
+ version: 2.7.0
67
67
  required_rubygems_version: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - ">="