sidekiq 6.5.1 → 7.0.9
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 +142 -12
- data/README.md +40 -32
- data/bin/sidekiq +3 -8
- data/bin/sidekiqload +186 -118
- data/bin/sidekiqmon +3 -0
- data/lib/sidekiq/api.rb +226 -139
- data/lib/sidekiq/capsule.rb +127 -0
- data/lib/sidekiq/cli.rb +55 -61
- data/lib/sidekiq/client.rb +31 -18
- data/lib/sidekiq/component.rb +5 -1
- data/lib/sidekiq/config.rb +270 -0
- data/lib/sidekiq/deploy.rb +62 -0
- data/lib/sidekiq/embedded.rb +61 -0
- data/lib/sidekiq/fetch.rb +11 -14
- data/lib/sidekiq/job.rb +375 -10
- data/lib/sidekiq/job_logger.rb +2 -2
- data/lib/sidekiq/job_retry.rb +62 -41
- data/lib/sidekiq/job_util.rb +48 -14
- data/lib/sidekiq/launcher.rb +71 -65
- data/lib/sidekiq/logger.rb +1 -26
- data/lib/sidekiq/manager.rb +9 -11
- data/lib/sidekiq/metrics/query.rb +153 -0
- data/lib/sidekiq/metrics/shared.rb +95 -0
- data/lib/sidekiq/metrics/tracking.rb +136 -0
- data/lib/sidekiq/middleware/chain.rb +84 -48
- data/lib/sidekiq/middleware/current_attributes.rb +12 -17
- data/lib/sidekiq/monitor.rb +17 -4
- data/lib/sidekiq/paginator.rb +9 -1
- data/lib/sidekiq/processor.rb +27 -27
- data/lib/sidekiq/rails.rb +4 -9
- data/lib/sidekiq/redis_client_adapter.rb +8 -47
- data/lib/sidekiq/redis_connection.rb +11 -113
- data/lib/sidekiq/scheduled.rb +60 -33
- data/lib/sidekiq/testing.rb +5 -33
- data/lib/sidekiq/transaction_aware_client.rb +4 -5
- data/lib/sidekiq/version.rb +2 -1
- data/lib/sidekiq/web/action.rb +3 -3
- data/lib/sidekiq/web/application.rb +40 -9
- data/lib/sidekiq/web/csrf_protection.rb +1 -1
- data/lib/sidekiq/web/helpers.rb +32 -18
- data/lib/sidekiq/web.rb +7 -14
- data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
- data/lib/sidekiq.rb +76 -266
- data/sidekiq.gemspec +21 -10
- data/web/assets/javascripts/application.js +19 -1
- data/web/assets/javascripts/base-charts.js +106 -0
- data/web/assets/javascripts/chart.min.js +13 -0
- data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
- data/web/assets/javascripts/dashboard-charts.js +166 -0
- data/web/assets/javascripts/dashboard.js +3 -240
- data/web/assets/javascripts/metrics.js +264 -0
- data/web/assets/stylesheets/application-dark.css +4 -0
- data/web/assets/stylesheets/application-rtl.css +2 -91
- data/web/assets/stylesheets/application.css +65 -297
- data/web/locales/ar.yml +70 -70
- data/web/locales/cs.yml +62 -62
- data/web/locales/da.yml +60 -53
- data/web/locales/de.yml +65 -65
- data/web/locales/el.yml +43 -24
- data/web/locales/en.yml +82 -69
- data/web/locales/es.yml +68 -68
- data/web/locales/fa.yml +65 -65
- data/web/locales/fr.yml +67 -67
- data/web/locales/gd.yml +99 -0
- data/web/locales/he.yml +65 -64
- data/web/locales/hi.yml +59 -59
- data/web/locales/it.yml +53 -53
- data/web/locales/ja.yml +73 -68
- data/web/locales/ko.yml +52 -52
- data/web/locales/lt.yml +66 -66
- data/web/locales/nb.yml +61 -61
- data/web/locales/nl.yml +52 -52
- data/web/locales/pl.yml +45 -45
- data/web/locales/pt-br.yml +59 -69
- data/web/locales/pt.yml +51 -51
- data/web/locales/ru.yml +67 -66
- data/web/locales/sv.yml +53 -53
- data/web/locales/ta.yml +60 -60
- data/web/locales/uk.yml +62 -61
- data/web/locales/ur.yml +64 -64
- data/web/locales/vi.yml +67 -67
- data/web/locales/zh-cn.yml +43 -16
- data/web/locales/zh-tw.yml +42 -8
- data/web/views/_footer.erb +5 -2
- data/web/views/_job_info.erb +18 -2
- data/web/views/_metrics_period_select.erb +12 -0
- data/web/views/_nav.erb +1 -1
- data/web/views/_paging.erb +2 -0
- data/web/views/_poll_link.erb +1 -1
- data/web/views/busy.erb +43 -27
- data/web/views/dashboard.erb +36 -4
- data/web/views/metrics.erb +82 -0
- data/web/views/metrics_for_job.erb +68 -0
- data/web/views/morgue.erb +5 -9
- data/web/views/queue.erb +15 -15
- data/web/views/queues.erb +3 -1
- data/web/views/retries.erb +5 -9
- data/web/views/scheduled.erb +12 -13
- metadata +60 -27
- data/lib/sidekiq/.DS_Store +0 -0
- data/lib/sidekiq/delay.rb +0 -43
- data/lib/sidekiq/extensions/action_mailer.rb +0 -48
- data/lib/sidekiq/extensions/active_record.rb +0 -43
- data/lib/sidekiq/extensions/class_methods.rb +0 -43
- data/lib/sidekiq/extensions/generic_proxy.rb +0 -33
- data/lib/sidekiq/worker.rb +0 -367
- /data/{LICENSE → LICENSE.txt} +0 -0
metadata
CHANGED
|
@@ -1,60 +1,74 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sidekiq
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 7.0.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mike Perham
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-04-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: redis
|
|
14
|
+
name: redis-client
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 0.11.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 0.11.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: connection_pool
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 2.
|
|
33
|
+
version: 2.3.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 2.
|
|
40
|
+
version: 2.3.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rack
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: 2.2.4
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: 2.2.4
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: concurrent-ruby
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "<"
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '2
|
|
61
|
+
version: '2'
|
|
48
62
|
type: :runtime
|
|
49
63
|
prerelease: false
|
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
65
|
requirements:
|
|
52
|
-
- - "
|
|
66
|
+
- - "<"
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '2
|
|
68
|
+
version: '2'
|
|
55
69
|
description: Simple, efficient background processing for Ruby.
|
|
56
70
|
email:
|
|
57
|
-
-
|
|
71
|
+
- info@contribsys.com
|
|
58
72
|
executables:
|
|
59
73
|
- sidekiq
|
|
60
74
|
- sidekiqmon
|
|
@@ -62,7 +76,7 @@ extensions: []
|
|
|
62
76
|
extra_rdoc_files: []
|
|
63
77
|
files:
|
|
64
78
|
- Changes.md
|
|
65
|
-
- LICENSE
|
|
79
|
+
- LICENSE.txt
|
|
66
80
|
- README.md
|
|
67
81
|
- bin/sidekiq
|
|
68
82
|
- bin/sidekiqload
|
|
@@ -72,16 +86,14 @@ files:
|
|
|
72
86
|
- lib/generators/sidekiq/templates/job_spec.rb.erb
|
|
73
87
|
- lib/generators/sidekiq/templates/job_test.rb.erb
|
|
74
88
|
- lib/sidekiq.rb
|
|
75
|
-
- lib/sidekiq/.DS_Store
|
|
76
89
|
- lib/sidekiq/api.rb
|
|
90
|
+
- lib/sidekiq/capsule.rb
|
|
77
91
|
- lib/sidekiq/cli.rb
|
|
78
92
|
- lib/sidekiq/client.rb
|
|
79
93
|
- lib/sidekiq/component.rb
|
|
80
|
-
- lib/sidekiq/
|
|
81
|
-
- lib/sidekiq/
|
|
82
|
-
- lib/sidekiq/
|
|
83
|
-
- lib/sidekiq/extensions/class_methods.rb
|
|
84
|
-
- lib/sidekiq/extensions/generic_proxy.rb
|
|
94
|
+
- lib/sidekiq/config.rb
|
|
95
|
+
- lib/sidekiq/deploy.rb
|
|
96
|
+
- lib/sidekiq/embedded.rb
|
|
85
97
|
- lib/sidekiq/fetch.rb
|
|
86
98
|
- lib/sidekiq/job.rb
|
|
87
99
|
- lib/sidekiq/job_logger.rb
|
|
@@ -90,6 +102,9 @@ files:
|
|
|
90
102
|
- lib/sidekiq/launcher.rb
|
|
91
103
|
- lib/sidekiq/logger.rb
|
|
92
104
|
- lib/sidekiq/manager.rb
|
|
105
|
+
- lib/sidekiq/metrics/query.rb
|
|
106
|
+
- lib/sidekiq/metrics/shared.rb
|
|
107
|
+
- lib/sidekiq/metrics/tracking.rb
|
|
93
108
|
- lib/sidekiq/middleware/chain.rb
|
|
94
109
|
- lib/sidekiq/middleware/current_attributes.rb
|
|
95
110
|
- lib/sidekiq/middleware/i18n.rb
|
|
@@ -114,14 +129,19 @@ files:
|
|
|
114
129
|
- lib/sidekiq/web/csrf_protection.rb
|
|
115
130
|
- lib/sidekiq/web/helpers.rb
|
|
116
131
|
- lib/sidekiq/web/router.rb
|
|
117
|
-
- lib/sidekiq/
|
|
132
|
+
- lib/sidekiq/worker_compatibility_alias.rb
|
|
118
133
|
- sidekiq.gemspec
|
|
119
134
|
- web/assets/images/apple-touch-icon.png
|
|
120
135
|
- web/assets/images/favicon.ico
|
|
121
136
|
- web/assets/images/logo.png
|
|
122
137
|
- web/assets/images/status.png
|
|
123
138
|
- web/assets/javascripts/application.js
|
|
139
|
+
- web/assets/javascripts/base-charts.js
|
|
140
|
+
- web/assets/javascripts/chart.min.js
|
|
141
|
+
- web/assets/javascripts/chartjs-plugin-annotation.min.js
|
|
142
|
+
- web/assets/javascripts/dashboard-charts.js
|
|
124
143
|
- web/assets/javascripts/dashboard.js
|
|
144
|
+
- web/assets/javascripts/metrics.js
|
|
125
145
|
- web/assets/stylesheets/application-dark.css
|
|
126
146
|
- web/assets/stylesheets/application-rtl.css
|
|
127
147
|
- web/assets/stylesheets/application.css
|
|
@@ -136,6 +156,7 @@ files:
|
|
|
136
156
|
- web/locales/es.yml
|
|
137
157
|
- web/locales/fa.yml
|
|
138
158
|
- web/locales/fr.yml
|
|
159
|
+
- web/locales/gd.yml
|
|
139
160
|
- web/locales/he.yml
|
|
140
161
|
- web/locales/hi.yml
|
|
141
162
|
- web/locales/it.yml
|
|
@@ -157,6 +178,7 @@ files:
|
|
|
157
178
|
- web/locales/zh-tw.yml
|
|
158
179
|
- web/views/_footer.erb
|
|
159
180
|
- web/views/_job_info.erb
|
|
181
|
+
- web/views/_metrics_period_select.erb
|
|
160
182
|
- web/views/_nav.erb
|
|
161
183
|
- web/views/_paging.erb
|
|
162
184
|
- web/views/_poll_link.erb
|
|
@@ -166,6 +188,8 @@ files:
|
|
|
166
188
|
- web/views/dashboard.erb
|
|
167
189
|
- web/views/dead.erb
|
|
168
190
|
- web/views/layout.erb
|
|
191
|
+
- web/views/metrics.erb
|
|
192
|
+
- web/views/metrics_for_job.erb
|
|
169
193
|
- web/views/morgue.erb
|
|
170
194
|
- web/views/queue.erb
|
|
171
195
|
- web/views/queues.erb
|
|
@@ -178,11 +202,19 @@ licenses:
|
|
|
178
202
|
- LGPL-3.0
|
|
179
203
|
metadata:
|
|
180
204
|
homepage_uri: https://sidekiq.org
|
|
181
|
-
bug_tracker_uri: https://github.com/
|
|
182
|
-
documentation_uri: https://github.com/
|
|
183
|
-
changelog_uri: https://github.com/
|
|
184
|
-
source_code_uri: https://github.com/
|
|
185
|
-
|
|
205
|
+
bug_tracker_uri: https://github.com/sidekiq/sidekiq/issues
|
|
206
|
+
documentation_uri: https://github.com/sidekiq/sidekiq/wiki
|
|
207
|
+
changelog_uri: https://github.com/sidekiq/sidekiq/blob/main/Changes.md
|
|
208
|
+
source_code_uri: https://github.com/sidekiq/sidekiq
|
|
209
|
+
rubygems_mfa_required: 'true'
|
|
210
|
+
post_install_message: |2+
|
|
211
|
+
|
|
212
|
+
Welcome to Sidekiq 7.0!
|
|
213
|
+
|
|
214
|
+
1. Use `gem 'sidekiq', '<7'` in your Gemfile if you don't want this new version.
|
|
215
|
+
2. Read the release notes at https://github.com/sidekiq/sidekiq/blob/main/docs/7.0-Upgrade.md
|
|
216
|
+
3. If you have problems, search for open/closed issues at https://github.com/sidekiq/sidekiq/issues/
|
|
217
|
+
|
|
186
218
|
rdoc_options: []
|
|
187
219
|
require_paths:
|
|
188
220
|
- lib
|
|
@@ -190,15 +222,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
190
222
|
requirements:
|
|
191
223
|
- - ">="
|
|
192
224
|
- !ruby/object:Gem::Version
|
|
193
|
-
version: 2.
|
|
225
|
+
version: 2.7.0
|
|
194
226
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
227
|
requirements:
|
|
196
228
|
- - ">="
|
|
197
229
|
- !ruby/object:Gem::Version
|
|
198
230
|
version: '0'
|
|
199
231
|
requirements: []
|
|
200
|
-
rubygems_version: 3.
|
|
232
|
+
rubygems_version: 3.4.7
|
|
201
233
|
signing_key:
|
|
202
234
|
specification_version: 4
|
|
203
235
|
summary: Simple, efficient background processing for Ruby
|
|
204
236
|
test_files: []
|
|
237
|
+
...
|
data/lib/sidekiq/.DS_Store
DELETED
|
Binary file
|
data/lib/sidekiq/delay.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Sidekiq # :nodoc:
|
|
4
|
-
module Extensions
|
|
5
|
-
def self.enable_delay!
|
|
6
|
-
warn "Sidekiq's Delayed Extensions will be removed in Sidekiq 7.0", uplevel: 1
|
|
7
|
-
|
|
8
|
-
if defined?(::ActiveSupport)
|
|
9
|
-
require "sidekiq/extensions/active_record"
|
|
10
|
-
require "sidekiq/extensions/action_mailer"
|
|
11
|
-
|
|
12
|
-
# Need to patch Psych so it can autoload classes whose names are serialized
|
|
13
|
-
# in the delayed YAML.
|
|
14
|
-
Psych::Visitors::ToRuby.prepend(Sidekiq::Extensions::PsychAutoload)
|
|
15
|
-
|
|
16
|
-
ActiveSupport.on_load(:active_record) do
|
|
17
|
-
include Sidekiq::Extensions::ActiveRecord
|
|
18
|
-
end
|
|
19
|
-
ActiveSupport.on_load(:action_mailer) do
|
|
20
|
-
extend Sidekiq::Extensions::ActionMailer
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
require "sidekiq/extensions/class_methods"
|
|
25
|
-
Module.__send__(:include, Sidekiq::Extensions::Klass)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
module PsychAutoload
|
|
29
|
-
def resolve_class(klass_name)
|
|
30
|
-
return nil if !klass_name || klass_name.empty?
|
|
31
|
-
# constantize
|
|
32
|
-
names = klass_name.split("::")
|
|
33
|
-
names.shift if names.empty? || names.first.empty?
|
|
34
|
-
|
|
35
|
-
names.inject(Object) do |constant, name|
|
|
36
|
-
constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
|
|
37
|
-
end
|
|
38
|
-
rescue NameError
|
|
39
|
-
super
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "sidekiq/extensions/generic_proxy"
|
|
4
|
-
|
|
5
|
-
module Sidekiq
|
|
6
|
-
module Extensions
|
|
7
|
-
##
|
|
8
|
-
# Adds +delay+, +delay_for+ and +delay_until+ methods to ActionMailer to offload arbitrary email
|
|
9
|
-
# delivery to Sidekiq.
|
|
10
|
-
#
|
|
11
|
-
# @example
|
|
12
|
-
# UserMailer.delay.send_welcome_email(new_user)
|
|
13
|
-
# UserMailer.delay_for(5.days).send_welcome_email(new_user)
|
|
14
|
-
# UserMailer.delay_until(5.days.from_now).send_welcome_email(new_user)
|
|
15
|
-
class DelayedMailer
|
|
16
|
-
include Sidekiq::Worker
|
|
17
|
-
|
|
18
|
-
def perform(yml)
|
|
19
|
-
(target, method_name, args) = YAML.load(yml)
|
|
20
|
-
msg = target.public_send(method_name, *args)
|
|
21
|
-
# The email method can return nil, which causes ActionMailer to return
|
|
22
|
-
# an undeliverable empty message.
|
|
23
|
-
if msg
|
|
24
|
-
msg.deliver_now
|
|
25
|
-
else
|
|
26
|
-
raise "#{target.name}##{method_name} returned an undeliverable mail object"
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
module ActionMailer
|
|
32
|
-
def sidekiq_delay(options = {})
|
|
33
|
-
Proxy.new(DelayedMailer, self, options)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def sidekiq_delay_for(interval, options = {})
|
|
37
|
-
Proxy.new(DelayedMailer, self, options.merge("at" => Time.now.to_f + interval.to_f))
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def sidekiq_delay_until(timestamp, options = {})
|
|
41
|
-
Proxy.new(DelayedMailer, self, options.merge("at" => timestamp.to_f))
|
|
42
|
-
end
|
|
43
|
-
alias_method :delay, :sidekiq_delay
|
|
44
|
-
alias_method :delay_for, :sidekiq_delay_for
|
|
45
|
-
alias_method :delay_until, :sidekiq_delay_until
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "sidekiq/extensions/generic_proxy"
|
|
4
|
-
|
|
5
|
-
module Sidekiq
|
|
6
|
-
module Extensions
|
|
7
|
-
##
|
|
8
|
-
# Adds +delay+, +delay_for+ and +delay_until+ methods to ActiveRecord to offload instance method
|
|
9
|
-
# execution to Sidekiq.
|
|
10
|
-
#
|
|
11
|
-
# @example
|
|
12
|
-
# User.recent_signups.each { |user| user.delay.mark_as_awesome }
|
|
13
|
-
#
|
|
14
|
-
# Please note, this is not recommended as this will serialize the entire
|
|
15
|
-
# object to Redis. Your Sidekiq jobs should pass IDs, not entire instances.
|
|
16
|
-
# This is here for backwards compatibility with Delayed::Job only.
|
|
17
|
-
class DelayedModel
|
|
18
|
-
include Sidekiq::Worker
|
|
19
|
-
|
|
20
|
-
def perform(yml)
|
|
21
|
-
(target, method_name, args) = YAML.load(yml)
|
|
22
|
-
target.__send__(method_name, *args)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
module ActiveRecord
|
|
27
|
-
def sidekiq_delay(options = {})
|
|
28
|
-
Proxy.new(DelayedModel, self, options)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def sidekiq_delay_for(interval, options = {})
|
|
32
|
-
Proxy.new(DelayedModel, self, options.merge("at" => Time.now.to_f + interval.to_f))
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def sidekiq_delay_until(timestamp, options = {})
|
|
36
|
-
Proxy.new(DelayedModel, self, options.merge("at" => timestamp.to_f))
|
|
37
|
-
end
|
|
38
|
-
alias_method :delay, :sidekiq_delay
|
|
39
|
-
alias_method :delay_for, :sidekiq_delay_for
|
|
40
|
-
alias_method :delay_until, :sidekiq_delay_until
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "sidekiq/extensions/generic_proxy"
|
|
4
|
-
|
|
5
|
-
module Sidekiq
|
|
6
|
-
module Extensions
|
|
7
|
-
##
|
|
8
|
-
# Adds `delay`, `delay_for` and `delay_until` methods to all Classes to offload class method
|
|
9
|
-
# execution to Sidekiq.
|
|
10
|
-
#
|
|
11
|
-
# @example
|
|
12
|
-
# User.delay.delete_inactive
|
|
13
|
-
# Wikipedia.delay.download_changes_for(Date.today)
|
|
14
|
-
#
|
|
15
|
-
class DelayedClass
|
|
16
|
-
include Sidekiq::Worker
|
|
17
|
-
|
|
18
|
-
def perform(yml)
|
|
19
|
-
(target, method_name, args) = YAML.load(yml)
|
|
20
|
-
target.__send__(method_name, *args)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
module Klass
|
|
25
|
-
def sidekiq_delay(options = {})
|
|
26
|
-
Proxy.new(DelayedClass, self, options)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def sidekiq_delay_for(interval, options = {})
|
|
30
|
-
Proxy.new(DelayedClass, self, options.merge("at" => Time.now.to_f + interval.to_f))
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def sidekiq_delay_until(timestamp, options = {})
|
|
34
|
-
Proxy.new(DelayedClass, self, options.merge("at" => timestamp.to_f))
|
|
35
|
-
end
|
|
36
|
-
alias_method :delay, :sidekiq_delay
|
|
37
|
-
alias_method :delay_for, :sidekiq_delay_for
|
|
38
|
-
alias_method :delay_until, :sidekiq_delay_until
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
Module.__send__(:include, Sidekiq::Extensions::Klass) unless defined?(::Rails)
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "yaml"
|
|
4
|
-
|
|
5
|
-
module Sidekiq
|
|
6
|
-
module Extensions
|
|
7
|
-
SIZE_LIMIT = 8_192
|
|
8
|
-
|
|
9
|
-
class Proxy < BasicObject
|
|
10
|
-
def initialize(performable, target, options = {})
|
|
11
|
-
@performable = performable
|
|
12
|
-
@target = target
|
|
13
|
-
@opts = options.transform_keys(&:to_s)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def method_missing(name, *args)
|
|
17
|
-
# Sidekiq has a limitation in that its message must be JSON.
|
|
18
|
-
# JSON can't round trip real Ruby objects so we use YAML to
|
|
19
|
-
# serialize the objects to a String. The YAML will be converted
|
|
20
|
-
# to JSON and then deserialized on the other side back into a
|
|
21
|
-
# Ruby object.
|
|
22
|
-
obj = [@target, name, args]
|
|
23
|
-
marshalled = ::YAML.dump(obj)
|
|
24
|
-
if marshalled.size > SIZE_LIMIT
|
|
25
|
-
::Sidekiq.logger.warn { "#{@target}.#{name} job argument is #{marshalled.bytesize} bytes, you should refactor it to reduce the size" }
|
|
26
|
-
end
|
|
27
|
-
@performable.client_push({"class" => @performable,
|
|
28
|
-
"args" => [marshalled],
|
|
29
|
-
"display_class" => "#{@target}.#{name}"}.merge(@opts))
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|