sidekiq 5.2.7 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sidekiq might be problematic. Click here for more details.

Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -2
  3. data/.standard.yml +20 -0
  4. data/6.0-Upgrade.md +70 -0
  5. data/Changes.md +34 -0
  6. data/Ent-2.0-Upgrade.md +37 -0
  7. data/Ent-Changes.md +12 -0
  8. data/Gemfile +12 -11
  9. data/Gemfile.lock +196 -0
  10. data/Pro-5.0-Upgrade.md +25 -0
  11. data/Pro-Changes.md +12 -3
  12. data/README.md +16 -30
  13. data/Rakefile +5 -4
  14. data/bin/sidekiqload +26 -22
  15. data/bin/sidekiqmon +9 -0
  16. data/lib/generators/sidekiq/templates/worker_test.rb.erb +1 -1
  17. data/lib/generators/sidekiq/worker_generator.rb +12 -14
  18. data/lib/sidekiq.rb +53 -42
  19. data/lib/sidekiq/api.rb +138 -151
  20. data/lib/sidekiq/cli.rb +97 -162
  21. data/lib/sidekiq/client.rb +45 -46
  22. data/lib/sidekiq/delay.rb +5 -6
  23. data/lib/sidekiq/exception_handler.rb +10 -12
  24. data/lib/sidekiq/extensions/action_mailer.rb +10 -20
  25. data/lib/sidekiq/extensions/active_record.rb +9 -7
  26. data/lib/sidekiq/extensions/class_methods.rb +9 -7
  27. data/lib/sidekiq/extensions/generic_proxy.rb +4 -4
  28. data/lib/sidekiq/fetch.rb +5 -6
  29. data/lib/sidekiq/job_logger.rb +37 -7
  30. data/lib/sidekiq/job_retry.rb +45 -58
  31. data/lib/sidekiq/launcher.rb +59 -51
  32. data/lib/sidekiq/logger.rb +69 -0
  33. data/lib/sidekiq/manager.rb +7 -9
  34. data/lib/sidekiq/middleware/chain.rb +3 -2
  35. data/lib/sidekiq/middleware/i18n.rb +5 -7
  36. data/lib/sidekiq/monitor.rb +148 -0
  37. data/lib/sidekiq/paginator.rb +11 -12
  38. data/lib/sidekiq/processor.rb +52 -49
  39. data/lib/sidekiq/rails.rb +23 -29
  40. data/lib/sidekiq/redis_connection.rb +31 -37
  41. data/lib/sidekiq/scheduled.rb +17 -19
  42. data/lib/sidekiq/testing.rb +22 -23
  43. data/lib/sidekiq/testing/inline.rb +2 -1
  44. data/lib/sidekiq/util.rb +17 -14
  45. data/lib/sidekiq/version.rb +2 -1
  46. data/lib/sidekiq/web.rb +41 -49
  47. data/lib/sidekiq/web/action.rb +14 -10
  48. data/lib/sidekiq/web/application.rb +60 -57
  49. data/lib/sidekiq/web/helpers.rb +66 -67
  50. data/lib/sidekiq/web/router.rb +17 -14
  51. data/lib/sidekiq/worker.rb +124 -97
  52. data/sidekiq.gemspec +16 -16
  53. data/web/assets/javascripts/dashboard.js +2 -21
  54. data/web/locales/ja.yml +2 -1
  55. metadata +19 -29
  56. data/.travis.yml +0 -11
  57. data/bin/sidekiqctl +0 -20
  58. data/lib/sidekiq/core_ext.rb +0 -1
  59. data/lib/sidekiq/ctl.rb +0 -221
  60. data/lib/sidekiq/logging.rb +0 -122
  61. data/lib/sidekiq/middleware/server/active_record.rb +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 408fa69245bc5dbd48894529237ed6bd94fb62f084e12c3cf21c5c2b44466555
4
- data.tar.gz: 7052699621d277bf59aaee779f93c0f98089a2d0bbc5d40f4d991faa52ef7b90
3
+ metadata.gz: fda3ed37e1d981e1b32eea70669c678d400c071a9146a919848bcc598612de25
4
+ data.tar.gz: 6580ab6c188b2514efe807479ca25c06ea584d1def175d84d94639bc20f80b1e
5
5
  SHA512:
6
- metadata.gz: e128875c94c37f82fec77c4071e6abafd5326a1a949bff0ff90377d6a54c18b117a7753c439e7d9611e87dfc57c752251f6b2bf3cfb1c799d95016d2a112a211
7
- data.tar.gz: 5aabe50f97494052e73190fb8aa96f57b253e5855416938ef0644013012678640d620c8e05484c4d945ea558d55413c7c1625967ab40f402680b7ded27133321
6
+ metadata.gz: 25682d3dbf99d29fa3f56b7c74419863d3549b6e0c182e69c83fbc02a2955d053bca85eec53b474d4d22c7526e44e865f378aa4111152a91377b373be27c4d47
7
+ data.tar.gz: e55d07434b1e2ab26df6748101bf10640fc08d4d93f00b75ed04d82ed309ee8529d652982430cd00671c98b5e53cc733bef4b686df58a6b0e116ba04c12139aa
data/.gitignore CHANGED
@@ -1,8 +1,6 @@
1
1
  .rvmrc
2
2
  .ruby-version
3
3
  tags
4
- Gemfile.lock
5
- gemfiles/*.lock
6
4
  *.swp
7
5
  dump.rdb
8
6
  .rbx
@@ -0,0 +1,20 @@
1
+ ruby_version: 2.5.0
2
+ fix: false
3
+ parallel: true
4
+ ignore:
5
+ - test/**/*
6
+ - examples/**/*
7
+ - myapp/**/*
8
+ - 'lib/sidekiq.rb':
9
+ - Lint/InheritException
10
+ - 'lib/sidekiq/extensions/**/*':
11
+ - Style/MethodMissingSuper
12
+ - Style/MissingRespondToMissing
13
+ - 'lib/**/*':
14
+ - Naming/AsciiIdentifiers
15
+ - Lint/RescueException
16
+ - Security/YAMLLoad
17
+ - Naming/AccessorMethodName
18
+ - Naming/MethodName
19
+ - Style/GlobalVars
20
+ - Style/Alias
@@ -0,0 +1,70 @@
1
+ # Welcome to Sidekiq 6.0!
2
+
3
+ Sidekiq 6.0 contains some breaking changes which streamline proper operation
4
+ of Sidekiq. It also drops support for EOL versions of Ruby and Rails.
5
+
6
+ ## What's New
7
+
8
+ This release has major breaking changes. Read and test carefully in production.
9
+
10
+ - ActiveJobs can now use `sidekiq_options` directly to configure Sidekiq
11
+ features/internals like the retry subsystem. Prefer the native
12
+ Sidekiq::Worker APIs as some Sidekiq features (e.g. unique jobs) do not work well with AJ.
13
+ ```ruby
14
+ class MyJob < ActiveJob::Base
15
+ queue_as :myqueue
16
+ sidekiq_options retry: 10, backtrace: 20
17
+ def perform(...)
18
+ end
19
+ end
20
+ ```
21
+ - Logging has been redesigned to allow pluggable formatters and several
22
+ formats ship with Sidekiq:
23
+ * default - your typical output on macOS
24
+ * heroku - enabled specifically when running in Heroku
25
+ * json - a JSON format for search indexing, one hash per line
26
+
27
+ Sidekiq will enable the best formatter for the detected environment but
28
+ you can override it by configuring the log formatter explicitly. See
29
+ 'sidekiq/logger' for implementation details.
30
+
31
+ ```ruby
32
+ Sidekiq.configure_server do |config|
33
+ config.log_formatter = AcmeCorp::PlainLogFormatter.new
34
+ # config.log_formatter = Sidekiq::Logger::Format::JSON.new
35
+ end
36
+ ```
37
+ - **Remove the daemonization, logfile and pidfile command line arguments and `sidekiqctl` binary**.
38
+ I've [noted for years](https://www.mikeperham.com/2014/09/22/dont-daemonize-your-daemons/)
39
+ how modern services should be managed with a proper init system.
40
+ Managing services manually is more error-prone, let your operating system do it for you.
41
+ systemd, upstart, and foreman are three options. See the Deployment wiki page for the latest details.
42
+ - **Validate proper usage of the `REDIS_PROVIDER` variable.**
43
+ This variable is meant to hold the name of the environment
44
+ variable which contains your Redis URL, so that you can switch Redis
45
+ providers quickly and easily with a single variable change. It is not
46
+ meant to hold the actual Redis URL itself. If you want to manually set
47
+ the Redis URL then you may set `REDIS_URL` directly. [#3969]
48
+ - **Increase default shutdown timeout from 8 seconds to 25 seconds.**
49
+ Both Heroku and ECS now use 30 second shutdown timeout
50
+ by default and we want Sidekiq to take advantage of this time. If you
51
+ have deployment scripts which depend on the old default timeout, use `-t 8` to
52
+ get the old behavior. [#3968]
53
+ * **Rails <5** is no longer supported. Rails 6+ only works in zeitwerk mode.
54
+ * **Ruby <2.5** is no longer supported.
55
+ * **Redis <4** is no longer supported.
56
+
57
+ ## Upgrade
58
+
59
+ As always, please upgrade Sidekiq **one major version at a time**.
60
+ If you are already running Sidekiq 5.x, then:
61
+
62
+ * Upgrade to the latest Sidekiq 5.x.
63
+ ```ruby
64
+ gem 'sidekiq', '< 6'
65
+ ```
66
+ * Fix any deprecation warnings you see.
67
+ * Upgrade to 6.x.
68
+ ```ruby
69
+ gem 'sidekiq', '< 7'
70
+ ```
data/Changes.md CHANGED
@@ -2,6 +2,40 @@
2
2
 
3
3
  [Sidekiq Changes](https://github.com/mperham/sidekiq/blob/master/Changes.md) | [Sidekiq Pro Changes](https://github.com/mperham/sidekiq/blob/master/Pro-Changes.md) | [Sidekiq Enterprise Changes](https://github.com/mperham/sidekiq/blob/master/Ent-Changes.md)
4
4
 
5
+ 6.0
6
+ ---------
7
+
8
+ This release has major breaking changes. Read and test carefully in production.
9
+
10
+ - ActiveJobs can now use `sidekiq_options` directly to configure Sidekiq
11
+ features/internals like the retry subsystem. [#4213, pirj]
12
+ ```ruby
13
+ class MyJob < ActiveJob::Base
14
+ queue_as :myqueue
15
+ sidekiq_options retry: 10, backtrace: 20
16
+ def perform(...)
17
+ end
18
+ end
19
+ ```
20
+ - **BREAKING CHANGE** Validate proper usage of the `REDIS_PROVIDER`
21
+ variable. This variable is meant to hold the name of the environment
22
+ variable which contains your Redis URL, so that you can switch Redis
23
+ providers quickly and easily with a single variable change. It is not
24
+ meant to hold the actual Redis URL itself. If you want to manually set
25
+ the Redis URL (not recommended as it implies you have no failover),
26
+ then you may set `REDIS_URL` directly. [#3969]
27
+ - **BREAKING CHANGE** Increase default shutdown timeout from 8 seconds
28
+ to 25 seconds. Both Heroku and ECS now use 30 second shutdown timeout
29
+ by default and we want Sidekiq to take advantage of this time. If you
30
+ have deployment scripts which depend on the old default timeout, use `-t 8` to
31
+ get the old behavior. [#3968]
32
+ - **BREAKING CHANGE** Remove the daemonization, logfile and pidfile
33
+ arguments to Sidekiq. Use a proper process supervisor (e.g. systemd or
34
+ foreman) to manage Sidekiq. See the Deployment wiki page for links to
35
+ more resources.
36
+ - Integrate the StandardRB code formatter to ensure consistent code
37
+ styling. [#4114, gearnode]
38
+
5
39
  5.2.7
6
40
  ---------
7
41
 
@@ -0,0 +1,37 @@
1
+ # Welcome to Sidekiq Enterprise 2.0!
2
+
3
+ Sidekiq Enterprise 2.0 adds a few new features and adds the requirement that license
4
+ credentials be available at runtime. Note that Sidekiq 6.0 does have major breaking changes.
5
+
6
+ ## What's New
7
+
8
+ * Sidekiq Enterprise now requires license credentials at runtime. If you
9
+ configured Bundler as described in the access email you need do
10
+ nothing, everything should just work. If you are vendoring Sidekiq
11
+ Enterprise you will need to configure Bundler also or set
12
+ `SIDEKIQ_ENT_USERNAME=abcdef12 bundle exec sidekiq...` when starting the
13
+ process. [#4232]
14
+ * Dead jobs now release any unique locks they were holding when they died [#4162]
15
+ * Backoff can now be customized per rate limiter by passing in a Proc [#4219]
16
+ ```ruby
17
+ limiter = Sidekiq::Limiter.bucket(:stripe, 10, :second, backoff: ->(limiter, job) {
18
+ return job['overrated'] || 5 # wait for N seconds, where N is the number of
19
+ # times we've failed the rate limit
20
+ })
21
+ ```
22
+ * Removed deprecated APIs and warnings.
23
+ * Various changes for Sidekiq 6.0
24
+ * Requires Ruby 2.5+ and Redis 4.0+
25
+ * Requires Sidekiq 6.0+ and Sidekiq Pro 5.0+
26
+
27
+ ## Upgrade
28
+
29
+ * Upgrade to the latest Sidekiq Enterprise 1.x.
30
+ ```ruby
31
+ gem 'sidekiq-ent', '< 2'
32
+ ```
33
+ * Fix any deprecation warnings you see.
34
+ * Upgrade to 2.x.
35
+ ```ruby
36
+ gem 'sidekiq-ent', '< 3'
37
+ ```
@@ -4,6 +4,18 @@
4
4
 
5
5
  Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
6
6
 
7
+ 2.0.0
8
+ -------------
9
+
10
+ - Except for the [newly required credentials](/mperham/sidekiq/issue/4232), Sidekiq Enterprise 2.0 does
11
+ not have any significant migration steps.
12
+ - Sidekiq Enterprise must now be started with valid license credentials. [#4232]
13
+ - Call `GC.compact` if possible in sidekiqswarm before forking [#4181]
14
+ - Changes for forward-compatibility with Sidekiq 6.0.
15
+ - Add death handler to remove any lingering unique locks [#4162]
16
+ - Backoff can now be customized per rate limiter [#4219]
17
+ - Code formatting changes for StandardRB
18
+
7
19
  1.8.1
8
20
  -------------
9
21
 
data/Gemfile CHANGED
@@ -1,23 +1,24 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'rake'
6
- gem 'redis-namespace'
7
- gem 'rails', '~> 5.2'
8
- gem 'sqlite3', '~> 1.3.6', platforms: :ruby
9
- gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
5
+ gem "rake"
6
+ gem "redis-namespace"
7
+ gem "rails"
8
+ gem "sqlite3", platforms: :ruby
9
+ gem "activerecord-jdbcsqlite3-adapter", platforms: :jruby
10
10
 
11
11
  group :test do
12
- gem 'minitest'
13
- gem 'simplecov'
12
+ gem "minitest"
13
+ gem "simplecov"
14
14
  end
15
15
 
16
16
  group :development, :test do
17
- gem 'pry-byebug', platforms: :mri
17
+ gem "pry-byebug", platforms: :mri
18
+ gem "standard"
18
19
  end
19
20
 
20
21
  group :load_test do
21
- gem 'hiredis'
22
- gem 'toxiproxy'
22
+ gem "hiredis"
23
+ gem "toxiproxy"
23
24
  end
@@ -0,0 +1,196 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ sidekiq (6.0.0)
5
+ connection_pool (>= 2.2.2)
6
+ rack (>= 2.0.0)
7
+ rack-protection (>= 2.0.0)
8
+ redis (>= 4.1.0)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ actioncable (6.0.0)
14
+ actionpack (= 6.0.0)
15
+ nio4r (~> 2.0)
16
+ websocket-driver (>= 0.6.1)
17
+ actionmailbox (6.0.0)
18
+ actionpack (= 6.0.0)
19
+ activejob (= 6.0.0)
20
+ activerecord (= 6.0.0)
21
+ activestorage (= 6.0.0)
22
+ activesupport (= 6.0.0)
23
+ mail (>= 2.7.1)
24
+ actionmailer (6.0.0)
25
+ actionpack (= 6.0.0)
26
+ actionview (= 6.0.0)
27
+ activejob (= 6.0.0)
28
+ mail (~> 2.5, >= 2.5.4)
29
+ rails-dom-testing (~> 2.0)
30
+ actionpack (6.0.0)
31
+ actionview (= 6.0.0)
32
+ activesupport (= 6.0.0)
33
+ rack (~> 2.0)
34
+ rack-test (>= 0.6.3)
35
+ rails-dom-testing (~> 2.0)
36
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
37
+ actiontext (6.0.0)
38
+ actionpack (= 6.0.0)
39
+ activerecord (= 6.0.0)
40
+ activestorage (= 6.0.0)
41
+ activesupport (= 6.0.0)
42
+ nokogiri (>= 1.8.5)
43
+ actionview (6.0.0)
44
+ activesupport (= 6.0.0)
45
+ builder (~> 3.1)
46
+ erubi (~> 1.4)
47
+ rails-dom-testing (~> 2.0)
48
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
49
+ activejob (6.0.0)
50
+ activesupport (= 6.0.0)
51
+ globalid (>= 0.3.6)
52
+ activemodel (6.0.0)
53
+ activesupport (= 6.0.0)
54
+ activerecord (6.0.0)
55
+ activemodel (= 6.0.0)
56
+ activesupport (= 6.0.0)
57
+ activestorage (6.0.0)
58
+ actionpack (= 6.0.0)
59
+ activejob (= 6.0.0)
60
+ activerecord (= 6.0.0)
61
+ marcel (~> 0.3.1)
62
+ activesupport (6.0.0)
63
+ concurrent-ruby (~> 1.0, >= 1.0.2)
64
+ i18n (>= 0.7, < 2)
65
+ minitest (~> 5.1)
66
+ tzinfo (~> 1.1)
67
+ zeitwerk (~> 2.1, >= 2.1.8)
68
+ ast (2.4.0)
69
+ builder (3.2.3)
70
+ byebug (11.0.1)
71
+ coderay (1.1.2)
72
+ concurrent-ruby (1.1.5)
73
+ connection_pool (2.2.2)
74
+ crass (1.0.4)
75
+ docile (1.3.2)
76
+ erubi (1.8.0)
77
+ globalid (0.4.2)
78
+ activesupport (>= 4.2.0)
79
+ hiredis (0.6.3)
80
+ i18n (1.6.0)
81
+ concurrent-ruby (~> 1.0)
82
+ jaro_winkler (1.5.3)
83
+ json (2.2.0)
84
+ loofah (2.2.3)
85
+ crass (~> 1.0.2)
86
+ nokogiri (>= 1.5.9)
87
+ mail (2.7.1)
88
+ mini_mime (>= 0.1.1)
89
+ marcel (0.3.3)
90
+ mimemagic (~> 0.3.2)
91
+ method_source (0.9.2)
92
+ mimemagic (0.3.3)
93
+ mini_mime (1.0.2)
94
+ mini_portile2 (2.4.0)
95
+ minitest (5.11.3)
96
+ nio4r (2.5.1)
97
+ nokogiri (1.10.4)
98
+ mini_portile2 (~> 2.4.0)
99
+ parallel (1.17.0)
100
+ parser (2.6.3.0)
101
+ ast (~> 2.4.0)
102
+ pry (0.12.2)
103
+ coderay (~> 1.1.0)
104
+ method_source (~> 0.9.0)
105
+ pry-byebug (3.7.0)
106
+ byebug (~> 11.0)
107
+ pry (~> 0.10)
108
+ rack (2.0.7)
109
+ rack-protection (2.0.7)
110
+ rack
111
+ rack-test (1.1.0)
112
+ rack (>= 1.0, < 3)
113
+ rails (6.0.0)
114
+ actioncable (= 6.0.0)
115
+ actionmailbox (= 6.0.0)
116
+ actionmailer (= 6.0.0)
117
+ actionpack (= 6.0.0)
118
+ actiontext (= 6.0.0)
119
+ actionview (= 6.0.0)
120
+ activejob (= 6.0.0)
121
+ activemodel (= 6.0.0)
122
+ activerecord (= 6.0.0)
123
+ activestorage (= 6.0.0)
124
+ activesupport (= 6.0.0)
125
+ bundler (>= 1.3.0)
126
+ railties (= 6.0.0)
127
+ sprockets-rails (>= 2.0.0)
128
+ rails-dom-testing (2.0.3)
129
+ activesupport (>= 4.2.0)
130
+ nokogiri (>= 1.6)
131
+ rails-html-sanitizer (1.2.0)
132
+ loofah (~> 2.2, >= 2.2.2)
133
+ railties (6.0.0)
134
+ actionpack (= 6.0.0)
135
+ activesupport (= 6.0.0)
136
+ method_source
137
+ rake (>= 0.8.7)
138
+ thor (>= 0.20.3, < 2.0)
139
+ rainbow (3.0.0)
140
+ rake (12.3.3)
141
+ redis (4.1.2)
142
+ redis-namespace (1.6.0)
143
+ redis (>= 3.0.4)
144
+ rubocop (0.72.0)
145
+ jaro_winkler (~> 1.5.1)
146
+ parallel (~> 1.10)
147
+ parser (>= 2.6)
148
+ rainbow (>= 2.2.2, < 4.0)
149
+ ruby-progressbar (~> 1.7)
150
+ unicode-display_width (>= 1.4.0, < 1.7)
151
+ rubocop-performance (1.4.1)
152
+ rubocop (>= 0.71.0)
153
+ ruby-progressbar (1.10.1)
154
+ simplecov (0.17.0)
155
+ docile (~> 1.1)
156
+ json (>= 1.8, < 3)
157
+ simplecov-html (~> 0.10.0)
158
+ simplecov-html (0.10.2)
159
+ sprockets (3.7.2)
160
+ concurrent-ruby (~> 1.0)
161
+ rack (> 1, < 3)
162
+ sprockets-rails (3.2.1)
163
+ actionpack (>= 4.0)
164
+ activesupport (>= 4.0)
165
+ sprockets (>= 3.0.0)
166
+ sqlite3 (1.4.1)
167
+ standard (0.1.2)
168
+ rubocop (~> 0.72.0)
169
+ rubocop-performance (~> 1.4.0)
170
+ thor (0.20.3)
171
+ thread_safe (0.3.6)
172
+ toxiproxy (1.0.3)
173
+ tzinfo (1.2.5)
174
+ thread_safe (~> 0.1)
175
+ unicode-display_width (1.6.0)
176
+ websocket-driver (0.7.1)
177
+ websocket-extensions (>= 0.1.0)
178
+ websocket-extensions (0.1.4)
179
+ zeitwerk (2.1.9)
180
+
181
+ PLATFORMS
182
+ ruby
183
+
184
+ DEPENDENCIES
185
+ activerecord-jdbcsqlite3-adapter
186
+ hiredis
187
+ minitest
188
+ pry-byebug
189
+ rails
190
+ rake
191
+ redis-namespace
192
+ sidekiq!
193
+ simplecov
194
+ sqlite3
195
+ standard
196
+ toxiproxy
@@ -0,0 +1,25 @@
1
+ # Welcome to Sidekiq Pro 5.0!
2
+
3
+ Sidekiq Pro 5.0 is mainly a cleanup release for Sidekiq 6.0. The
4
+ migration should be as close to trivial as a major version bump can be.
5
+ Note that Sidekiq 6.0 does have major breaking changes.
6
+
7
+ ## What's New
8
+
9
+ * New localizations for the Sidekiq Pro Web UI: ES, ZH, PT, JA, RU
10
+ * Removed deprecated APIs and warnings.
11
+ * Various changes for Sidekiq 6.0
12
+ * Requires Ruby 2.5+ and Redis 4.0+
13
+ * Requires Sidekiq 6.0+.
14
+
15
+ ## Upgrade
16
+
17
+ * Upgrade to the latest Sidekiq Pro 4.x.
18
+ ```ruby
19
+ gem 'sidekiq-pro', '< 5'
20
+ ```
21
+ * Fix any deprecation warnings you see.
22
+ * Upgrade to 5.x.
23
+ ```ruby
24
+ gem 'sidekiq-pro', '< 6'
25
+ ```