sidekiq 6.5.10 → 8.1.7

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.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +568 -18
  3. data/README.md +66 -38
  4. data/bin/kiq +17 -0
  5. data/bin/lint-herb +13 -0
  6. data/bin/multi_queue_bench +271 -0
  7. data/bin/sidekiq +3 -8
  8. data/bin/sidekiqload +215 -118
  9. data/bin/sidekiqmon +3 -0
  10. data/bin/webload +69 -0
  11. data/lib/active_job/queue_adapters/sidekiq_adapter.rb +124 -0
  12. data/lib/generators/sidekiq/job_generator.rb +17 -3
  13. data/lib/generators/sidekiq/templates/job.rb.erb +1 -1
  14. data/lib/sidekiq/api.rb +526 -218
  15. data/lib/sidekiq/capsule.rb +135 -0
  16. data/lib/sidekiq/cli.rb +88 -96
  17. data/lib/sidekiq/client.rb +114 -47
  18. data/lib/sidekiq/component.rb +71 -4
  19. data/lib/sidekiq/config.rb +316 -0
  20. data/lib/sidekiq/deploy.rb +64 -0
  21. data/lib/sidekiq/embedded.rb +64 -0
  22. data/lib/sidekiq/fetch.rb +12 -14
  23. data/lib/sidekiq/iterable_job.rb +56 -0
  24. data/lib/sidekiq/job/interrupt_handler.rb +24 -0
  25. data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
  26. data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
  27. data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
  28. data/lib/sidekiq/job/iterable.rb +322 -0
  29. data/lib/sidekiq/job.rb +397 -10
  30. data/lib/sidekiq/job_logger.rb +14 -11
  31. data/lib/sidekiq/job_retry.rb +78 -28
  32. data/lib/sidekiq/job_util.rb +58 -16
  33. data/lib/sidekiq/launcher.rb +86 -70
  34. data/lib/sidekiq/loader.rb +57 -0
  35. data/lib/sidekiq/logger.rb +25 -94
  36. data/lib/sidekiq/manager.rb +11 -13
  37. data/lib/sidekiq/metrics/query.rb +84 -48
  38. data/lib/sidekiq/metrics/shared.rb +29 -14
  39. data/lib/sidekiq/metrics/tracking.rb +49 -30
  40. data/lib/sidekiq/middleware/chain.rb +19 -18
  41. data/lib/sidekiq/middleware/current_attributes.rb +78 -21
  42. data/lib/sidekiq/middleware/i18n.rb +2 -0
  43. data/lib/sidekiq/middleware/modules.rb +2 -0
  44. data/lib/sidekiq/monitor.rb +15 -5
  45. data/lib/sidekiq/paginator.rb +26 -4
  46. data/lib/sidekiq/processor.rb +78 -65
  47. data/lib/sidekiq/profiler.rb +73 -0
  48. data/lib/sidekiq/rails.rb +45 -60
  49. data/lib/sidekiq/redis_client_adapter.rb +35 -72
  50. data/lib/sidekiq/redis_connection.rb +54 -114
  51. data/lib/sidekiq/ring_buffer.rb +3 -0
  52. data/lib/sidekiq/scheduled.rb +28 -30
  53. data/lib/sidekiq/systemd.rb +2 -0
  54. data/lib/sidekiq/test_api.rb +331 -0
  55. data/lib/sidekiq/testing/inline.rb +2 -30
  56. data/lib/sidekiq/testing.rb +2 -342
  57. data/lib/sidekiq/transaction_aware_client.rb +23 -9
  58. data/lib/sidekiq/tui/controls.rb +53 -0
  59. data/lib/sidekiq/tui/filtering.rb +53 -0
  60. data/lib/sidekiq/tui/tabs/base_tab.rb +230 -0
  61. data/lib/sidekiq/tui/tabs/busy.rb +104 -0
  62. data/lib/sidekiq/tui/tabs/dead.rb +14 -0
  63. data/lib/sidekiq/tui/tabs/home.rb +115 -0
  64. data/lib/sidekiq/tui/tabs/metrics.rb +114 -0
  65. data/lib/sidekiq/tui/tabs/queues.rb +83 -0
  66. data/lib/sidekiq/tui/tabs/retries.rb +14 -0
  67. data/lib/sidekiq/tui/tabs/scheduled.rb +14 -0
  68. data/lib/sidekiq/tui/tabs/set_tab.rb +91 -0
  69. data/lib/sidekiq/tui/tabs.rb +15 -0
  70. data/lib/sidekiq/tui.rb +390 -0
  71. data/lib/sidekiq/version.rb +6 -1
  72. data/lib/sidekiq/web/action.rb +149 -64
  73. data/lib/sidekiq/web/application.rb +379 -281
  74. data/lib/sidekiq/web/config.rb +117 -0
  75. data/lib/sidekiq/web/helpers.rb +190 -71
  76. data/lib/sidekiq/web/router.rb +62 -75
  77. data/lib/sidekiq/web.rb +68 -101
  78. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  79. data/lib/sidekiq.rb +85 -269
  80. data/sidekiq.gemspec +15 -11
  81. data/web/assets/images/logo.png +0 -0
  82. data/web/assets/images/status.png +0 -0
  83. data/web/assets/javascripts/application.js +84 -24
  84. data/web/assets/javascripts/base-charts.js +120 -0
  85. data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
  86. data/web/assets/javascripts/dashboard-charts.js +194 -0
  87. data/web/assets/javascripts/dashboard.js +18 -234
  88. data/web/assets/javascripts/metrics.js +138 -120
  89. data/web/assets/stylesheets/style.css +776 -0
  90. data/web/locales/ar.yml +72 -70
  91. data/web/locales/cs.yml +64 -62
  92. data/web/locales/da.yml +62 -53
  93. data/web/locales/de.yml +67 -65
  94. data/web/locales/el.yml +4 -7
  95. data/web/locales/en.yml +89 -71
  96. data/web/locales/es.yml +91 -68
  97. data/web/locales/fa.yml +67 -65
  98. data/web/locales/fr.yml +82 -67
  99. data/web/locales/gd.yml +110 -0
  100. data/web/locales/he.yml +67 -64
  101. data/web/locales/hi.yml +95 -59
  102. data/web/locales/it.yml +94 -54
  103. data/web/locales/ja.yml +69 -70
  104. data/web/locales/ko.yml +54 -52
  105. data/web/locales/lt.yml +68 -66
  106. data/web/locales/nb.yml +63 -61
  107. data/web/locales/nl.yml +54 -52
  108. data/web/locales/pl.yml +47 -45
  109. data/web/locales/{pt-br.yml → pt-BR.yml} +81 -70
  110. data/web/locales/pt.yml +53 -51
  111. data/web/locales/ru.yml +69 -66
  112. data/web/locales/sv.yml +55 -53
  113. data/web/locales/ta.yml +100 -64
  114. data/web/locales/tr.yml +102 -0
  115. data/web/locales/uk.yml +87 -61
  116. data/web/locales/ur.yml +66 -64
  117. data/web/locales/vi.yml +69 -67
  118. data/web/locales/zh-CN.yml +107 -0
  119. data/web/locales/{zh-tw.yml → zh-TW.yml} +13 -3
  120. data/web/views/_footer.html.erb +32 -0
  121. data/web/views/_job_info.html.erb +115 -0
  122. data/web/views/_metrics_period_select.html.erb +15 -0
  123. data/web/views/_nav.html.erb +45 -0
  124. data/web/views/_paging.html.erb +26 -0
  125. data/web/views/_poll_link.html.erb +4 -0
  126. data/web/views/_summary.html.erb +40 -0
  127. data/web/views/busy.html.erb +155 -0
  128. data/web/views/dashboard.html.erb +104 -0
  129. data/web/views/dead.html.erb +38 -0
  130. data/web/views/filtering.html.erb +6 -0
  131. data/web/views/layout.html.erb +26 -0
  132. data/web/views/metrics.html.erb +85 -0
  133. data/web/views/metrics_for_job.html.erb +58 -0
  134. data/web/views/morgue.html.erb +69 -0
  135. data/web/views/profiles.html.erb +43 -0
  136. data/web/views/queue.html.erb +57 -0
  137. data/web/views/queues.html.erb +46 -0
  138. data/web/views/retries.html.erb +77 -0
  139. data/web/views/retry.html.erb +39 -0
  140. data/web/views/scheduled.html.erb +64 -0
  141. data/web/views/{scheduled_job_info.erb → scheduled_job_info.html.erb} +3 -3
  142. metadata +113 -70
  143. data/lib/sidekiq/delay.rb +0 -43
  144. data/lib/sidekiq/extensions/action_mailer.rb +0 -48
  145. data/lib/sidekiq/extensions/active_record.rb +0 -43
  146. data/lib/sidekiq/extensions/class_methods.rb +0 -43
  147. data/lib/sidekiq/extensions/generic_proxy.rb +0 -33
  148. data/lib/sidekiq/metrics/deploy.rb +0 -47
  149. data/lib/sidekiq/web/csrf_protection.rb +0 -180
  150. data/lib/sidekiq/worker.rb +0 -370
  151. data/web/assets/javascripts/graph.js +0 -16
  152. data/web/assets/stylesheets/application-dark.css +0 -143
  153. data/web/assets/stylesheets/application-rtl.css +0 -242
  154. data/web/assets/stylesheets/application.css +0 -999
  155. data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
  156. data/web/assets/stylesheets/bootstrap.css +0 -5
  157. data/web/locales/zh-cn.yml +0 -93
  158. data/web/views/_footer.erb +0 -20
  159. data/web/views/_job_info.erb +0 -89
  160. data/web/views/_nav.erb +0 -52
  161. data/web/views/_paging.erb +0 -23
  162. data/web/views/_poll_link.erb +0 -4
  163. data/web/views/_status.erb +0 -4
  164. data/web/views/_summary.erb +0 -40
  165. data/web/views/busy.erb +0 -137
  166. data/web/views/dashboard.erb +0 -84
  167. data/web/views/dead.erb +0 -34
  168. data/web/views/layout.erb +0 -42
  169. data/web/views/metrics.erb +0 -69
  170. data/web/views/metrics_for_job.erb +0 -87
  171. data/web/views/morgue.erb +0 -78
  172. data/web/views/queue.erb +0 -59
  173. data/web/views/queues.erb +0 -38
  174. data/web/views/retries.erb +0 -83
  175. data/web/views/retry.erb +0 -34
  176. data/web/views/scheduled.erb +0 -57
  177. /data/{LICENSE → LICENSE.txt} +0 -0
metadata CHANGED
@@ -1,107 +1,133 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.5.10
4
+ version: 8.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-10-02 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
- name: redis
13
+ name: redis-client
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "<"
18
- - !ruby/object:Gem::Version
19
- version: '5'
20
16
  - - ">="
21
17
  - !ruby/object:Gem::Version
22
- version: 4.5.0
18
+ version: 0.29.0
23
19
  type: :runtime
24
20
  prerelease: false
25
21
  version_requirements: !ruby/object:Gem::Requirement
26
22
  requirements:
27
- - - "<"
28
- - !ruby/object:Gem::Version
29
- version: '5'
30
23
  - - ">="
31
24
  - !ruby/object:Gem::Version
32
- version: 4.5.0
25
+ version: 0.29.0
33
26
  - !ruby/object:Gem::Dependency
34
27
  name: connection_pool
35
28
  requirement: !ruby/object:Gem::Requirement
36
29
  requirements:
37
- - - "<"
30
+ - - ">="
38
31
  - !ruby/object:Gem::Version
39
- version: '3'
32
+ version: 3.0.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 3.0.0
40
+ - !ruby/object:Gem::Dependency
41
+ name: rack
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
40
44
  - - ">="
41
45
  - !ruby/object:Gem::Version
42
- version: 2.2.5
46
+ version: 3.2.0
43
47
  type: :runtime
44
48
  prerelease: false
45
49
  version_requirements: !ruby/object:Gem::Requirement
46
50
  requirements:
47
- - - "<"
51
+ - - ">="
48
52
  - !ruby/object:Gem::Version
49
- version: '3'
53
+ version: 3.2.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: json
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
50
58
  - - ">="
51
59
  - !ruby/object:Gem::Version
52
- version: 2.2.5
60
+ version: 2.16.0
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 2.16.0
53
68
  - !ruby/object:Gem::Dependency
54
- name: rack
69
+ name: logger
55
70
  requirement: !ruby/object:Gem::Requirement
56
71
  requirements:
57
- - - "~>"
72
+ - - ">="
58
73
  - !ruby/object:Gem::Version
59
- version: '2.0'
74
+ version: 1.7.0
60
75
  type: :runtime
61
76
  prerelease: false
62
77
  version_requirements: !ruby/object:Gem::Requirement
63
78
  requirements:
64
- - - "~>"
79
+ - - ">="
65
80
  - !ruby/object:Gem::Version
66
- version: '2.0'
81
+ version: 1.7.0
67
82
  description: Simple, efficient background processing for Ruby.
68
83
  email:
69
- - mperham@gmail.com
84
+ - info@contribsys.com
70
85
  executables:
86
+ - kiq
71
87
  - sidekiq
72
88
  - sidekiqmon
73
89
  extensions: []
74
90
  extra_rdoc_files: []
75
91
  files:
76
92
  - Changes.md
77
- - LICENSE
93
+ - LICENSE.txt
78
94
  - README.md
95
+ - bin/kiq
96
+ - bin/lint-herb
97
+ - bin/multi_queue_bench
79
98
  - bin/sidekiq
80
99
  - bin/sidekiqload
81
100
  - bin/sidekiqmon
101
+ - bin/webload
102
+ - lib/active_job/queue_adapters/sidekiq_adapter.rb
82
103
  - lib/generators/sidekiq/job_generator.rb
83
104
  - lib/generators/sidekiq/templates/job.rb.erb
84
105
  - lib/generators/sidekiq/templates/job_spec.rb.erb
85
106
  - lib/generators/sidekiq/templates/job_test.rb.erb
86
107
  - lib/sidekiq.rb
87
108
  - lib/sidekiq/api.rb
109
+ - lib/sidekiq/capsule.rb
88
110
  - lib/sidekiq/cli.rb
89
111
  - lib/sidekiq/client.rb
90
112
  - lib/sidekiq/component.rb
91
- - lib/sidekiq/delay.rb
92
- - lib/sidekiq/extensions/action_mailer.rb
93
- - lib/sidekiq/extensions/active_record.rb
94
- - lib/sidekiq/extensions/class_methods.rb
95
- - lib/sidekiq/extensions/generic_proxy.rb
113
+ - lib/sidekiq/config.rb
114
+ - lib/sidekiq/deploy.rb
115
+ - lib/sidekiq/embedded.rb
96
116
  - lib/sidekiq/fetch.rb
117
+ - lib/sidekiq/iterable_job.rb
97
118
  - lib/sidekiq/job.rb
119
+ - lib/sidekiq/job/interrupt_handler.rb
120
+ - lib/sidekiq/job/iterable.rb
121
+ - lib/sidekiq/job/iterable/active_record_enumerator.rb
122
+ - lib/sidekiq/job/iterable/csv_enumerator.rb
123
+ - lib/sidekiq/job/iterable/enumerators.rb
98
124
  - lib/sidekiq/job_logger.rb
99
125
  - lib/sidekiq/job_retry.rb
100
126
  - lib/sidekiq/job_util.rb
101
127
  - lib/sidekiq/launcher.rb
128
+ - lib/sidekiq/loader.rb
102
129
  - lib/sidekiq/logger.rb
103
130
  - lib/sidekiq/manager.rb
104
- - lib/sidekiq/metrics/deploy.rb
105
131
  - lib/sidekiq/metrics/query.rb
106
132
  - lib/sidekiq/metrics/shared.rb
107
133
  - lib/sidekiq/metrics/tracking.rb
@@ -112,6 +138,7 @@ files:
112
138
  - lib/sidekiq/monitor.rb
113
139
  - lib/sidekiq/paginator.rb
114
140
  - lib/sidekiq/processor.rb
141
+ - lib/sidekiq/profiler.rb
115
142
  - lib/sidekiq/rails.rb
116
143
  - lib/sidekiq/redis_client_adapter.rb
117
144
  - lib/sidekiq/redis_connection.rb
@@ -119,33 +146,45 @@ files:
119
146
  - lib/sidekiq/scheduled.rb
120
147
  - lib/sidekiq/sd_notify.rb
121
148
  - lib/sidekiq/systemd.rb
149
+ - lib/sidekiq/test_api.rb
122
150
  - lib/sidekiq/testing.rb
123
151
  - lib/sidekiq/testing/inline.rb
124
152
  - lib/sidekiq/transaction_aware_client.rb
153
+ - lib/sidekiq/tui.rb
154
+ - lib/sidekiq/tui/controls.rb
155
+ - lib/sidekiq/tui/filtering.rb
156
+ - lib/sidekiq/tui/tabs.rb
157
+ - lib/sidekiq/tui/tabs/base_tab.rb
158
+ - lib/sidekiq/tui/tabs/busy.rb
159
+ - lib/sidekiq/tui/tabs/dead.rb
160
+ - lib/sidekiq/tui/tabs/home.rb
161
+ - lib/sidekiq/tui/tabs/metrics.rb
162
+ - lib/sidekiq/tui/tabs/queues.rb
163
+ - lib/sidekiq/tui/tabs/retries.rb
164
+ - lib/sidekiq/tui/tabs/scheduled.rb
165
+ - lib/sidekiq/tui/tabs/set_tab.rb
125
166
  - lib/sidekiq/version.rb
126
167
  - lib/sidekiq/web.rb
127
168
  - lib/sidekiq/web/action.rb
128
169
  - lib/sidekiq/web/application.rb
129
- - lib/sidekiq/web/csrf_protection.rb
170
+ - lib/sidekiq/web/config.rb
130
171
  - lib/sidekiq/web/helpers.rb
131
172
  - lib/sidekiq/web/router.rb
132
- - lib/sidekiq/worker.rb
173
+ - lib/sidekiq/worker_compatibility_alias.rb
133
174
  - sidekiq.gemspec
134
175
  - web/assets/images/apple-touch-icon.png
135
176
  - web/assets/images/favicon.ico
136
177
  - web/assets/images/logo.png
137
178
  - web/assets/images/status.png
138
179
  - web/assets/javascripts/application.js
180
+ - web/assets/javascripts/base-charts.js
139
181
  - web/assets/javascripts/chart.min.js
182
+ - web/assets/javascripts/chartjs-adapter-date-fns.min.js
140
183
  - web/assets/javascripts/chartjs-plugin-annotation.min.js
184
+ - web/assets/javascripts/dashboard-charts.js
141
185
  - web/assets/javascripts/dashboard.js
142
- - web/assets/javascripts/graph.js
143
186
  - web/assets/javascripts/metrics.js
144
- - web/assets/stylesheets/application-dark.css
145
- - web/assets/stylesheets/application-rtl.css
146
- - web/assets/stylesheets/application.css
147
- - web/assets/stylesheets/bootstrap-rtl.min.css
148
- - web/assets/stylesheets/bootstrap.css
187
+ - web/assets/stylesheets/style.css
149
188
  - web/locales/ar.yml
150
189
  - web/locales/cs.yml
151
190
  - web/locales/da.yml
@@ -155,6 +194,7 @@ files:
155
194
  - web/locales/es.yml
156
195
  - web/locales/fa.yml
157
196
  - web/locales/fr.yml
197
+ - web/locales/gd.yml
158
198
  - web/locales/he.yml
159
199
  - web/locales/hi.yml
160
200
  - web/locales/it.yml
@@ -164,46 +204,50 @@ files:
164
204
  - web/locales/nb.yml
165
205
  - web/locales/nl.yml
166
206
  - web/locales/pl.yml
167
- - web/locales/pt-br.yml
207
+ - web/locales/pt-BR.yml
168
208
  - web/locales/pt.yml
169
209
  - web/locales/ru.yml
170
210
  - web/locales/sv.yml
171
211
  - web/locales/ta.yml
212
+ - web/locales/tr.yml
172
213
  - web/locales/uk.yml
173
214
  - web/locales/ur.yml
174
215
  - web/locales/vi.yml
175
- - web/locales/zh-cn.yml
176
- - web/locales/zh-tw.yml
177
- - web/views/_footer.erb
178
- - web/views/_job_info.erb
179
- - web/views/_nav.erb
180
- - web/views/_paging.erb
181
- - web/views/_poll_link.erb
182
- - web/views/_status.erb
183
- - web/views/_summary.erb
184
- - web/views/busy.erb
185
- - web/views/dashboard.erb
186
- - web/views/dead.erb
187
- - web/views/layout.erb
188
- - web/views/metrics.erb
189
- - web/views/metrics_for_job.erb
190
- - web/views/morgue.erb
191
- - web/views/queue.erb
192
- - web/views/queues.erb
193
- - web/views/retries.erb
194
- - web/views/retry.erb
195
- - web/views/scheduled.erb
196
- - web/views/scheduled_job_info.erb
216
+ - web/locales/zh-CN.yml
217
+ - web/locales/zh-TW.yml
218
+ - web/views/_footer.html.erb
219
+ - web/views/_job_info.html.erb
220
+ - web/views/_metrics_period_select.html.erb
221
+ - web/views/_nav.html.erb
222
+ - web/views/_paging.html.erb
223
+ - web/views/_poll_link.html.erb
224
+ - web/views/_summary.html.erb
225
+ - web/views/busy.html.erb
226
+ - web/views/dashboard.html.erb
227
+ - web/views/dead.html.erb
228
+ - web/views/filtering.html.erb
229
+ - web/views/layout.html.erb
230
+ - web/views/metrics.html.erb
231
+ - web/views/metrics_for_job.html.erb
232
+ - web/views/morgue.html.erb
233
+ - web/views/profiles.html.erb
234
+ - web/views/queue.html.erb
235
+ - web/views/queues.html.erb
236
+ - web/views/retries.html.erb
237
+ - web/views/retry.html.erb
238
+ - web/views/scheduled.html.erb
239
+ - web/views/scheduled_job_info.html.erb
197
240
  homepage: https://sidekiq.org
198
241
  licenses:
199
242
  - LGPL-3.0
200
243
  metadata:
201
244
  homepage_uri: https://sidekiq.org
202
- bug_tracker_uri: https://github.com/mperham/sidekiq/issues
203
- documentation_uri: https://github.com/mperham/sidekiq/wiki
204
- changelog_uri: https://github.com/mperham/sidekiq/blob/main/Changes.md
205
- source_code_uri: https://github.com/mperham/sidekiq
206
- post_install_message:
245
+ bug_tracker_uri: https://github.com/sidekiq/sidekiq/issues
246
+ documentation_uri: https://github.com/sidekiq/sidekiq/wiki
247
+ changelog_uri: https://github.com/sidekiq/sidekiq/blob/main/Changes.md
248
+ source_code_uri: https://github.com/sidekiq/sidekiq
249
+ rubygems_mfa_required: 'true'
250
+ mailing_list_uri: https://www.rubyforum.org/tag/sidekiq
207
251
  rdoc_options: []
208
252
  require_paths:
209
253
  - lib
@@ -211,15 +255,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
255
  requirements:
212
256
  - - ">="
213
257
  - !ruby/object:Gem::Version
214
- version: 2.5.0
258
+ version: 3.2.0
215
259
  required_rubygems_version: !ruby/object:Gem::Requirement
216
260
  requirements:
217
261
  - - ">="
218
262
  - !ruby/object:Gem::Version
219
263
  version: '0'
220
264
  requirements: []
221
- rubygems_version: 3.4.7
222
- signing_key:
265
+ rubygems_version: 4.0.16
223
266
  specification_version: 4
224
267
  summary: Simple, efficient background processing for Ruby
225
268
  test_files: []
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
@@ -1,47 +0,0 @@
1
- require "sidekiq"
2
- require "time"
3
-
4
- # This file is designed to be required within the user's
5
- # deployment script; it should need a bare minimum of dependencies.
6
- #
7
- # require "sidekiq/metrics/deploy"
8
- # gitdesc = `git log -1 --format="%h %s"`.strip
9
- # d = Sidekiq::Metrics::Deploy.new
10
- # d.mark(label: gitdesc)
11
- #
12
- # Note that you cannot mark more than once per minute. This is a feature, not a bug.
13
- module Sidekiq
14
- module Metrics
15
- class Deploy
16
- MARK_TTL = 90 * 24 * 60 * 60 # 90 days
17
-
18
- def initialize(pool = Sidekiq.redis_pool)
19
- @pool = pool
20
- end
21
-
22
- def mark(at: Time.now, label: "")
23
- # we need to round the timestamp so that we gracefully
24
- # handle an excepted common error in marking deploys:
25
- # having every process mark its deploy, leading
26
- # to N marks for each deploy. Instead we round the time
27
- # to the minute so that multple marks within that minute
28
- # will all naturally rollup into one mark per minute.
29
- whence = at.utc
30
- floor = Time.utc(whence.year, whence.month, whence.mday, whence.hour, whence.min, 0)
31
- datecode = floor.strftime("%Y%m%d")
32
- key = "#{datecode}-marks"
33
- @pool.with do |c|
34
- c.pipelined do |pipe|
35
- pipe.hsetnx(key, floor.iso8601, label)
36
- pipe.expire(key, MARK_TTL)
37
- end
38
- end
39
- end
40
-
41
- def fetch(date = Time.now.utc.to_date)
42
- datecode = date.strftime("%Y%m%d")
43
- @pool.with { |c| c.hgetall("#{datecode}-marks") }
44
- end
45
- end
46
- end
47
- end