sidekiq 5.2.7 → 8.0.5
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/Changes.md +845 -8
- data/LICENSE.txt +9 -0
- data/README.md +54 -54
- data/bin/multi_queue_bench +271 -0
- data/bin/sidekiq +22 -3
- data/bin/sidekiqload +219 -112
- data/bin/sidekiqmon +11 -0
- data/bin/webload +69 -0
- data/lib/active_job/queue_adapters/sidekiq_adapter.rb +120 -0
- data/lib/generators/sidekiq/job_generator.rb +59 -0
- data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +2 -2
- data/lib/generators/sidekiq/templates/{worker_spec.rb.erb → job_spec.rb.erb} +1 -1
- data/lib/generators/sidekiq/templates/{worker_test.rb.erb → job_test.rb.erb} +1 -1
- data/lib/sidekiq/api.rb +757 -373
- data/lib/sidekiq/capsule.rb +132 -0
- data/lib/sidekiq/cli.rb +210 -233
- data/lib/sidekiq/client.rb +145 -103
- data/lib/sidekiq/component.rb +128 -0
- data/lib/sidekiq/config.rb +315 -0
- data/lib/sidekiq/deploy.rb +64 -0
- data/lib/sidekiq/embedded.rb +64 -0
- data/lib/sidekiq/fetch.rb +49 -42
- data/lib/sidekiq/iterable_job.rb +56 -0
- data/lib/sidekiq/job/interrupt_handler.rb +24 -0
- data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
- data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
- data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
- data/lib/sidekiq/job/iterable.rb +306 -0
- data/lib/sidekiq/job.rb +385 -0
- data/lib/sidekiq/job_logger.rb +34 -7
- data/lib/sidekiq/job_retry.rb +164 -109
- data/lib/sidekiq/job_util.rb +113 -0
- data/lib/sidekiq/launcher.rb +208 -107
- data/lib/sidekiq/logger.rb +80 -0
- data/lib/sidekiq/manager.rb +42 -46
- data/lib/sidekiq/metrics/query.rb +184 -0
- data/lib/sidekiq/metrics/shared.rb +109 -0
- data/lib/sidekiq/metrics/tracking.rb +150 -0
- data/lib/sidekiq/middleware/chain.rb +113 -56
- data/lib/sidekiq/middleware/current_attributes.rb +119 -0
- data/lib/sidekiq/middleware/i18n.rb +7 -7
- data/lib/sidekiq/middleware/modules.rb +23 -0
- data/lib/sidekiq/monitor.rb +147 -0
- data/lib/sidekiq/paginator.rb +41 -16
- data/lib/sidekiq/processor.rb +146 -127
- data/lib/sidekiq/profiler.rb +72 -0
- data/lib/sidekiq/rails.rb +46 -43
- data/lib/sidekiq/redis_client_adapter.rb +113 -0
- data/lib/sidekiq/redis_connection.rb +79 -108
- data/lib/sidekiq/ring_buffer.rb +31 -0
- data/lib/sidekiq/scheduled.rb +112 -50
- data/lib/sidekiq/sd_notify.rb +149 -0
- data/lib/sidekiq/systemd.rb +26 -0
- data/lib/sidekiq/testing/inline.rb +6 -5
- data/lib/sidekiq/testing.rb +91 -90
- data/lib/sidekiq/transaction_aware_client.rb +51 -0
- data/lib/sidekiq/version.rb +7 -1
- data/lib/sidekiq/web/action.rb +125 -60
- data/lib/sidekiq/web/application.rb +363 -259
- data/lib/sidekiq/web/config.rb +120 -0
- data/lib/sidekiq/web/csrf_protection.rb +183 -0
- data/lib/sidekiq/web/helpers.rb +241 -120
- data/lib/sidekiq/web/router.rb +62 -71
- data/lib/sidekiq/web.rb +69 -161
- data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
- data/lib/sidekiq.rb +94 -182
- data/sidekiq.gemspec +26 -16
- data/web/assets/images/apple-touch-icon.png +0 -0
- data/web/assets/javascripts/application.js +150 -61
- data/web/assets/javascripts/base-charts.js +120 -0
- data/web/assets/javascripts/chart.min.js +13 -0
- data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
- data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
- data/web/assets/javascripts/dashboard-charts.js +194 -0
- data/web/assets/javascripts/dashboard.js +41 -293
- data/web/assets/javascripts/metrics.js +280 -0
- data/web/assets/stylesheets/style.css +766 -0
- data/web/locales/ar.yml +72 -65
- data/web/locales/cs.yml +63 -62
- data/web/locales/da.yml +61 -53
- data/web/locales/de.yml +66 -53
- data/web/locales/el.yml +44 -24
- data/web/locales/en.yml +94 -66
- data/web/locales/es.yml +92 -54
- data/web/locales/fa.yml +66 -65
- data/web/locales/fr.yml +83 -62
- data/web/locales/gd.yml +99 -0
- data/web/locales/he.yml +66 -64
- data/web/locales/hi.yml +60 -59
- data/web/locales/it.yml +93 -54
- data/web/locales/ja.yml +75 -64
- data/web/locales/ko.yml +53 -52
- data/web/locales/lt.yml +84 -0
- data/web/locales/nb.yml +62 -61
- data/web/locales/nl.yml +53 -52
- data/web/locales/pl.yml +46 -45
- data/web/locales/{pt-br.yml → pt-BR.yml} +84 -56
- data/web/locales/pt.yml +52 -51
- data/web/locales/ru.yml +69 -63
- data/web/locales/sv.yml +54 -53
- data/web/locales/ta.yml +61 -60
- data/web/locales/tr.yml +101 -0
- data/web/locales/uk.yml +86 -61
- data/web/locales/ur.yml +65 -64
- data/web/locales/vi.yml +84 -0
- data/web/locales/zh-CN.yml +106 -0
- data/web/locales/{zh-tw.yml → zh-TW.yml} +43 -9
- data/web/views/_footer.erb +31 -19
- data/web/views/_job_info.erb +94 -75
- data/web/views/_metrics_period_select.erb +15 -0
- data/web/views/_nav.erb +14 -21
- data/web/views/_paging.erb +23 -19
- data/web/views/_poll_link.erb +3 -6
- data/web/views/_summary.erb +23 -23
- data/web/views/busy.erb +139 -87
- data/web/views/dashboard.erb +82 -53
- data/web/views/dead.erb +31 -27
- data/web/views/filtering.erb +6 -0
- data/web/views/layout.erb +15 -29
- data/web/views/metrics.erb +84 -0
- data/web/views/metrics_for_job.erb +58 -0
- data/web/views/morgue.erb +60 -70
- data/web/views/profiles.erb +43 -0
- data/web/views/queue.erb +50 -39
- data/web/views/queues.erb +45 -29
- data/web/views/retries.erb +65 -75
- data/web/views/retry.erb +32 -27
- data/web/views/scheduled.erb +58 -52
- data/web/views/scheduled_job_info.erb +1 -1
- metadata +96 -76
- data/.circleci/config.yml +0 -61
- data/.github/contributing.md +0 -32
- data/.github/issue_template.md +0 -11
- data/.gitignore +0 -15
- data/.travis.yml +0 -11
- data/3.0-Upgrade.md +0 -70
- data/4.0-Upgrade.md +0 -53
- data/5.0-Upgrade.md +0 -56
- data/COMM-LICENSE +0 -97
- data/Ent-Changes.md +0 -238
- data/Gemfile +0 -23
- data/LICENSE +0 -9
- data/Pro-2.0-Upgrade.md +0 -138
- data/Pro-3.0-Upgrade.md +0 -44
- data/Pro-4.0-Upgrade.md +0 -35
- data/Pro-Changes.md +0 -759
- data/Rakefile +0 -9
- data/bin/sidekiqctl +0 -20
- data/code_of_conduct.md +0 -50
- data/lib/generators/sidekiq/worker_generator.rb +0 -49
- data/lib/sidekiq/core_ext.rb +0 -1
- data/lib/sidekiq/ctl.rb +0 -221
- data/lib/sidekiq/delay.rb +0 -42
- data/lib/sidekiq/exception_handler.rb +0 -29
- data/lib/sidekiq/extensions/action_mailer.rb +0 -57
- data/lib/sidekiq/extensions/active_record.rb +0 -40
- data/lib/sidekiq/extensions/class_methods.rb +0 -40
- data/lib/sidekiq/extensions/generic_proxy.rb +0 -31
- data/lib/sidekiq/logging.rb +0 -122
- data/lib/sidekiq/middleware/server/active_record.rb +0 -23
- data/lib/sidekiq/util.rb +0 -66
- data/lib/sidekiq/worker.rb +0 -220
- data/web/assets/stylesheets/application-rtl.css +0 -246
- data/web/assets/stylesheets/application.css +0 -1144
- data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
- data/web/assets/stylesheets/bootstrap.css +0 -5
- data/web/locales/zh-cn.yml +0 -68
- data/web/views/_status.erb +0 -4
data/lib/sidekiq.rb
CHANGED
@@ -1,237 +1,149 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
fail "Sidekiq #{Sidekiq::VERSION} does not support Ruby versions below
|
3
|
+
require "sidekiq/version"
|
4
|
+
fail "Sidekiq #{Sidekiq::VERSION} does not support Ruby versions below 3.2.0." if RUBY_PLATFORM != "java" && Gem::Version.new(RUBY_VERSION) < Gem::Version.new("3.2.0")
|
5
5
|
|
6
|
-
|
7
|
-
require
|
8
|
-
|
9
|
-
require 'sidekiq/redis_connection'
|
10
|
-
require 'sidekiq/delay'
|
6
|
+
begin
|
7
|
+
require "sidekiq-ent/version"
|
8
|
+
fail <<~EOM if Gem::Version.new(Sidekiq::Enterprise::VERSION).segments[0] != Sidekiq::MAJOR
|
11
9
|
|
12
|
-
|
10
|
+
Sidekiq Enterprise #{Sidekiq::Enterprise::VERSION} does not work with Sidekiq #{Sidekiq::VERSION}.
|
11
|
+
Starting with Sidekiq 7, major versions are synchronized so Sidekiq Enterprise 7 works with Sidekiq 7.
|
12
|
+
Use `bundle up sidekiq-ent` to upgrade.
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
DEFAULTS = {
|
19
|
-
queues: [],
|
20
|
-
labels: [],
|
21
|
-
concurrency: 10,
|
22
|
-
require: '.',
|
23
|
-
environment: nil,
|
24
|
-
timeout: 8,
|
25
|
-
poll_interval_average: nil,
|
26
|
-
average_scheduled_poll_interval: 5,
|
27
|
-
error_handlers: [],
|
28
|
-
death_handlers: [],
|
29
|
-
lifecycle_events: {
|
30
|
-
startup: [],
|
31
|
-
quiet: [],
|
32
|
-
shutdown: [],
|
33
|
-
heartbeat: [],
|
34
|
-
},
|
35
|
-
dead_max_jobs: 10_000,
|
36
|
-
dead_timeout_in_seconds: 180 * 24 * 60 * 60, # 6 months
|
37
|
-
reloader: proc { |&block| block.call },
|
38
|
-
}
|
39
|
-
|
40
|
-
DEFAULT_WORKER_OPTIONS = {
|
41
|
-
'retry' => true,
|
42
|
-
'queue' => 'default'
|
43
|
-
}
|
44
|
-
|
45
|
-
FAKE_INFO = {
|
46
|
-
"redis_version" => "9.9.9",
|
47
|
-
"uptime_in_days" => "9999",
|
48
|
-
"connected_clients" => "9999",
|
49
|
-
"used_memory_human" => "9P",
|
50
|
-
"used_memory_peak_human" => "9P"
|
51
|
-
}
|
14
|
+
EOM
|
15
|
+
rescue LoadError
|
16
|
+
end
|
52
17
|
|
53
|
-
|
54
|
-
|
55
|
-
|
18
|
+
begin
|
19
|
+
require "sidekiq/pro/version"
|
20
|
+
fail <<~EOM if Gem::Version.new(Sidekiq::Pro::VERSION).segments[0] != Sidekiq::MAJOR
|
56
21
|
|
57
|
-
|
58
|
-
|
59
|
-
|
22
|
+
Sidekiq Pro #{Sidekiq::Pro::VERSION} does not work with Sidekiq #{Sidekiq::VERSION}.
|
23
|
+
Starting with Sidekiq 7, major versions are synchronized so Sidekiq Pro 7 works with Sidekiq 7.
|
24
|
+
Use `bundle up sidekiq-pro` to upgrade.
|
60
25
|
|
61
|
-
|
62
|
-
|
63
|
-
|
26
|
+
EOM
|
27
|
+
rescue LoadError
|
28
|
+
end
|
64
29
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
# end
|
74
|
-
def self.configure_server
|
75
|
-
yield self if server?
|
76
|
-
end
|
30
|
+
require "sidekiq/config"
|
31
|
+
require "sidekiq/logger"
|
32
|
+
require "sidekiq/client"
|
33
|
+
require "sidekiq/transaction_aware_client"
|
34
|
+
require "sidekiq/job"
|
35
|
+
require "sidekiq/iterable_job"
|
36
|
+
require "sidekiq/worker_compatibility_alias"
|
37
|
+
require "sidekiq/redis_client_adapter"
|
77
38
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
def self
|
85
|
-
|
39
|
+
require "json"
|
40
|
+
|
41
|
+
module Sidekiq
|
42
|
+
NAME = "Sidekiq"
|
43
|
+
LICENSE = "See LICENSE and the LGPL-3.0 for licensing details."
|
44
|
+
|
45
|
+
def self.❨╯°□°❩╯︵┻━┻
|
46
|
+
puts "Take a deep breath and count to ten..."
|
86
47
|
end
|
87
48
|
|
88
49
|
def self.server?
|
89
50
|
defined?(Sidekiq::CLI)
|
90
51
|
end
|
91
52
|
|
92
|
-
def self.
|
93
|
-
|
94
|
-
redis_pool.with do |conn|
|
95
|
-
retryable = true
|
96
|
-
begin
|
97
|
-
yield conn
|
98
|
-
rescue Redis::CommandError => ex
|
99
|
-
#2550 Failover can cause the server to become a replica, need
|
100
|
-
# to disconnect and reopen the socket to get back to the primary.
|
101
|
-
(conn.disconnect!; retryable = false; retry) if retryable && ex.message =~ /READONLY/
|
102
|
-
raise
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def self.redis_info
|
108
|
-
redis do |conn|
|
109
|
-
begin
|
110
|
-
# admin commands can't go through redis-namespace starting
|
111
|
-
# in redis-namespace 2.0
|
112
|
-
if conn.respond_to?(:namespace)
|
113
|
-
conn.redis.info
|
114
|
-
else
|
115
|
-
conn.info
|
116
|
-
end
|
117
|
-
rescue Redis::CommandError => ex
|
118
|
-
#2850 return fake version when INFO command has (probably) been renamed
|
119
|
-
raise unless ex.message =~ /unknown command/
|
120
|
-
FAKE_INFO
|
121
|
-
end
|
122
|
-
end
|
53
|
+
def self.load_json(string)
|
54
|
+
JSON.parse(string)
|
123
55
|
end
|
124
56
|
|
125
|
-
def self.
|
126
|
-
|
57
|
+
def self.dump_json(object)
|
58
|
+
JSON.generate(object)
|
127
59
|
end
|
128
60
|
|
129
|
-
def self.
|
130
|
-
|
131
|
-
hash
|
132
|
-
else
|
133
|
-
Sidekiq::RedisConnection.create(hash)
|
134
|
-
end
|
61
|
+
def self.pro?
|
62
|
+
defined?(Sidekiq::Pro)
|
135
63
|
end
|
136
64
|
|
137
|
-
def self.
|
138
|
-
|
139
|
-
yield @client_chain if block_given?
|
140
|
-
@client_chain
|
65
|
+
def self.ent?
|
66
|
+
defined?(Sidekiq::Enterprise)
|
141
67
|
end
|
142
68
|
|
143
|
-
def self.
|
144
|
-
|
145
|
-
yield @server_chain if block_given?
|
146
|
-
@server_chain
|
69
|
+
def self.redis_pool
|
70
|
+
(Thread.current[:sidekiq_capsule] || default_configuration).redis_pool
|
147
71
|
end
|
148
72
|
|
149
|
-
def self.
|
150
|
-
|
73
|
+
def self.redis(&block)
|
74
|
+
(Thread.current[:sidekiq_capsule] || default_configuration).redis(&block)
|
151
75
|
end
|
152
76
|
|
153
|
-
def self.
|
154
|
-
|
155
|
-
@default_worker_options = default_worker_options.merge(Hash[hash.map{|k, v| [k.to_s, v]}])
|
156
|
-
end
|
157
|
-
def self.default_worker_options
|
158
|
-
defined?(@default_worker_options) ? @default_worker_options : DEFAULT_WORKER_OPTIONS
|
77
|
+
def self.strict_args!(mode = :raise)
|
78
|
+
Sidekiq::Config::DEFAULTS[:on_complex_arguments] = mode
|
159
79
|
end
|
160
80
|
|
161
|
-
def self.
|
162
|
-
|
163
|
-
return nil unless prok
|
164
|
-
death_handlers << prok
|
81
|
+
def self.default_job_options=(hash)
|
82
|
+
@default_job_options = default_job_options.merge(hash.transform_keys(&:to_s))
|
165
83
|
end
|
166
84
|
|
167
|
-
|
168
|
-
|
169
|
-
# the job dies. It's the notification to your application
|
170
|
-
# that this job will not succeed without manual intervention.
|
171
|
-
#
|
172
|
-
# Sidekiq.configure_server do |config|
|
173
|
-
# config.death_handlers << ->(job, ex) do
|
174
|
-
# end
|
175
|
-
# end
|
176
|
-
def self.death_handlers
|
177
|
-
options[:death_handlers]
|
85
|
+
def self.default_job_options
|
86
|
+
@default_job_options ||= {"retry" => true, "queue" => "default"}
|
178
87
|
end
|
179
88
|
|
180
|
-
def self.
|
181
|
-
|
182
|
-
end
|
183
|
-
def self.dump_json(object)
|
184
|
-
JSON.generate(object)
|
89
|
+
def self.default_configuration
|
90
|
+
@config ||= Sidekiq::Config.new
|
185
91
|
end
|
186
92
|
|
187
93
|
def self.logger
|
188
|
-
|
94
|
+
default_configuration.logger
|
189
95
|
end
|
190
|
-
|
191
|
-
|
96
|
+
|
97
|
+
def self.configure_server(&block)
|
98
|
+
(@config_blocks ||= []) << block
|
99
|
+
yield default_configuration if server?
|
192
100
|
end
|
193
101
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
# See sidekiq/scheduled.rb for an in-depth explanation of this value
|
199
|
-
def self.average_scheduled_poll_interval=(interval)
|
200
|
-
self.options[:average_scheduled_poll_interval] = interval
|
102
|
+
def self.freeze!
|
103
|
+
@frozen = true
|
104
|
+
@config_blocks = nil
|
105
|
+
default_configuration.freeze!
|
201
106
|
end
|
202
107
|
|
203
|
-
#
|
108
|
+
# Creates a Sidekiq::Config instance that is more tuned for embedding
|
109
|
+
# within an arbitrary Ruby process. Notably it reduces concurrency by
|
110
|
+
# default so there is less contention for CPU time with other threads.
|
204
111
|
#
|
205
|
-
# Sidekiq.
|
206
|
-
# config.
|
112
|
+
# instance = Sidekiq.configure_embed do |config|
|
113
|
+
# config.queues = %w[critical default low]
|
207
114
|
# end
|
115
|
+
# instance.run
|
116
|
+
# sleep 10
|
117
|
+
# instance.stop
|
208
118
|
#
|
209
|
-
#
|
210
|
-
|
211
|
-
|
119
|
+
# NB: it is really easy to overload a Ruby process with threads due to the GIL.
|
120
|
+
# I do not recommend setting concurrency higher than 2-3.
|
121
|
+
#
|
122
|
+
# NB: Sidekiq only supports one instance in memory. You will get undefined behavior
|
123
|
+
# if you try to embed Sidekiq twice in the same process.
|
124
|
+
def self.configure_embed(&block)
|
125
|
+
raise "Sidekiq global configuration is frozen, you must create all embedded instances BEFORE calling `run`" if @frozen
|
126
|
+
|
127
|
+
require "sidekiq/embedded"
|
128
|
+
cfg = default_configuration
|
129
|
+
cfg.concurrency = 2
|
130
|
+
@config_blocks&.each { |block| block.call(cfg) }
|
131
|
+
yield cfg
|
132
|
+
|
133
|
+
Sidekiq::Embedded.new(cfg)
|
212
134
|
end
|
213
135
|
|
214
|
-
|
215
|
-
|
216
|
-
#
|
217
|
-
# Sidekiq.configure_server do |config|
|
218
|
-
# config.on(:shutdown) do
|
219
|
-
# puts "Goodbye cruel world!"
|
220
|
-
# end
|
221
|
-
# end
|
222
|
-
def self.on(event, &block)
|
223
|
-
raise ArgumentError, "Symbols only please: #{event}" unless event.is_a?(Symbol)
|
224
|
-
raise ArgumentError, "Invalid event name: #{event}" unless options[:lifecycle_events].key?(event)
|
225
|
-
options[:lifecycle_events][event] << block
|
136
|
+
def self.configure_client
|
137
|
+
yield default_configuration unless server?
|
226
138
|
end
|
227
139
|
|
228
|
-
# We are shutting down Sidekiq but what about
|
140
|
+
# We are shutting down Sidekiq but what about threads that
|
229
141
|
# are working on some long job? This error is
|
230
|
-
# raised in
|
142
|
+
# raised in jobs that have not finished within the hard
|
231
143
|
# timeout limit. This is needed to rollback db transactions,
|
232
144
|
# otherwise Ruby's Thread#kill will commit. See #377.
|
233
|
-
# DO NOT RESCUE THIS ERROR IN YOUR
|
145
|
+
# DO NOT RESCUE THIS ERROR IN YOUR JOBS
|
234
146
|
class Shutdown < Interrupt; end
|
235
147
|
end
|
236
148
|
|
237
|
-
require
|
149
|
+
require "sidekiq/rails" if defined?(::Rails::Engine)
|
data/sidekiq.gemspec
CHANGED
@@ -1,21 +1,31 @@
|
|
1
|
-
require_relative
|
1
|
+
require_relative "lib/sidekiq/version"
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
|
-
gem.authors
|
5
|
-
gem.email
|
6
|
-
gem.summary
|
7
|
-
gem.description
|
8
|
-
gem.homepage
|
9
|
-
gem.license
|
4
|
+
gem.authors = ["Mike Perham"]
|
5
|
+
gem.email = ["info@contribsys.com"]
|
6
|
+
gem.summary = "Simple, efficient background processing for Ruby"
|
7
|
+
gem.description = "Simple, efficient background processing for Ruby."
|
8
|
+
gem.homepage = "https://sidekiq.org"
|
9
|
+
gem.license = "LGPL-3.0"
|
10
10
|
|
11
|
-
gem.executables
|
12
|
-
gem.files
|
13
|
-
gem.name
|
14
|
-
gem.version
|
15
|
-
gem.required_ruby_version = ">=
|
11
|
+
gem.executables = ["sidekiq", "sidekiqmon"]
|
12
|
+
gem.files = %w[sidekiq.gemspec README.md Changes.md LICENSE.txt] + `git ls-files | grep -E '^(bin|lib|web)'`.split("\n")
|
13
|
+
gem.name = "sidekiq"
|
14
|
+
gem.version = Sidekiq::VERSION
|
15
|
+
gem.required_ruby_version = ">= 3.2.0"
|
16
16
|
|
17
|
-
gem.
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
gem.metadata = {
|
18
|
+
"homepage_uri" => "https://sidekiq.org",
|
19
|
+
"bug_tracker_uri" => "https://github.com/sidekiq/sidekiq/issues",
|
20
|
+
"documentation_uri" => "https://github.com/sidekiq/sidekiq/wiki",
|
21
|
+
"changelog_uri" => "https://github.com/sidekiq/sidekiq/blob/main/Changes.md",
|
22
|
+
"source_code_uri" => "https://github.com/sidekiq/sidekiq",
|
23
|
+
"rubygems_mfa_required" => "true"
|
24
|
+
}
|
25
|
+
|
26
|
+
gem.add_dependency "redis-client", ">= 0.23.2"
|
27
|
+
gem.add_dependency "connection_pool", ">= 2.5.0"
|
28
|
+
gem.add_dependency "rack", ">= 3.1.0"
|
29
|
+
gem.add_dependency "json", ">= 2.9.0"
|
30
|
+
gem.add_dependency "logger", ">= 1.6.2"
|
21
31
|
end
|
Binary file
|