sidekiq 6.2.2 → 8.1.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.
Files changed (181) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +726 -11
  3. data/LICENSE.txt +9 -0
  4. data/README.md +70 -39
  5. data/bin/kiq +17 -0
  6. data/bin/lint-herb +13 -0
  7. data/bin/multi_queue_bench +271 -0
  8. data/bin/sidekiq +4 -9
  9. data/bin/sidekiqload +214 -115
  10. data/bin/sidekiqmon +4 -1
  11. data/bin/webload +69 -0
  12. data/lib/active_job/queue_adapters/sidekiq_adapter.rb +124 -0
  13. data/lib/generators/sidekiq/job_generator.rb +71 -0
  14. data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +3 -3
  15. data/lib/generators/sidekiq/templates/{worker_spec.rb.erb → job_spec.rb.erb} +1 -1
  16. data/lib/generators/sidekiq/templates/{worker_test.rb.erb → job_test.rb.erb} +1 -1
  17. data/lib/sidekiq/api.rb +729 -264
  18. data/lib/sidekiq/capsule.rb +135 -0
  19. data/lib/sidekiq/cli.rb +124 -100
  20. data/lib/sidekiq/client.rb +153 -106
  21. data/lib/sidekiq/component.rb +132 -0
  22. data/lib/sidekiq/config.rb +320 -0
  23. data/lib/sidekiq/deploy.rb +64 -0
  24. data/lib/sidekiq/embedded.rb +64 -0
  25. data/lib/sidekiq/fetch.rb +27 -26
  26. data/lib/sidekiq/iterable_job.rb +56 -0
  27. data/lib/sidekiq/job/interrupt_handler.rb +24 -0
  28. data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
  29. data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
  30. data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
  31. data/lib/sidekiq/job/iterable.rb +322 -0
  32. data/lib/sidekiq/job.rb +397 -5
  33. data/lib/sidekiq/job_logger.rb +23 -32
  34. data/lib/sidekiq/job_retry.rb +141 -68
  35. data/lib/sidekiq/job_util.rb +113 -0
  36. data/lib/sidekiq/launcher.rb +122 -98
  37. data/lib/sidekiq/loader.rb +57 -0
  38. data/lib/sidekiq/logger.rb +27 -106
  39. data/lib/sidekiq/manager.rb +41 -43
  40. data/lib/sidekiq/metrics/query.rb +184 -0
  41. data/lib/sidekiq/metrics/shared.rb +109 -0
  42. data/lib/sidekiq/metrics/tracking.rb +153 -0
  43. data/lib/sidekiq/middleware/chain.rb +96 -51
  44. data/lib/sidekiq/middleware/current_attributes.rb +120 -0
  45. data/lib/sidekiq/middleware/i18n.rb +8 -4
  46. data/lib/sidekiq/middleware/modules.rb +23 -0
  47. data/lib/sidekiq/monitor.rb +16 -6
  48. data/lib/sidekiq/paginator.rb +37 -10
  49. data/lib/sidekiq/processor.rb +105 -87
  50. data/lib/sidekiq/profiler.rb +73 -0
  51. data/lib/sidekiq/rails.rb +49 -36
  52. data/lib/sidekiq/redis_client_adapter.rb +117 -0
  53. data/lib/sidekiq/redis_connection.rb +55 -86
  54. data/lib/sidekiq/ring_buffer.rb +32 -0
  55. data/lib/sidekiq/scheduled.rb +106 -50
  56. data/lib/sidekiq/systemd.rb +2 -0
  57. data/lib/sidekiq/test_api.rb +331 -0
  58. data/lib/sidekiq/testing/inline.rb +2 -30
  59. data/lib/sidekiq/testing.rb +2 -342
  60. data/lib/sidekiq/transaction_aware_client.rb +59 -0
  61. data/lib/sidekiq/tui/controls.rb +53 -0
  62. data/lib/sidekiq/tui/filtering.rb +53 -0
  63. data/lib/sidekiq/tui/tabs/base_tab.rb +204 -0
  64. data/lib/sidekiq/tui/tabs/busy.rb +118 -0
  65. data/lib/sidekiq/tui/tabs/dead.rb +19 -0
  66. data/lib/sidekiq/tui/tabs/home.rb +144 -0
  67. data/lib/sidekiq/tui/tabs/metrics.rb +131 -0
  68. data/lib/sidekiq/tui/tabs/queues.rb +95 -0
  69. data/lib/sidekiq/tui/tabs/retries.rb +19 -0
  70. data/lib/sidekiq/tui/tabs/scheduled.rb +19 -0
  71. data/lib/sidekiq/tui/tabs/set_tab.rb +96 -0
  72. data/lib/sidekiq/tui/tabs.rb +15 -0
  73. data/lib/sidekiq/tui.rb +382 -0
  74. data/lib/sidekiq/version.rb +6 -1
  75. data/lib/sidekiq/web/action.rb +149 -64
  76. data/lib/sidekiq/web/application.rb +376 -268
  77. data/lib/sidekiq/web/config.rb +117 -0
  78. data/lib/sidekiq/web/helpers.rb +213 -87
  79. data/lib/sidekiq/web/router.rb +61 -74
  80. data/lib/sidekiq/web.rb +71 -100
  81. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  82. data/lib/sidekiq.rb +95 -196
  83. data/sidekiq.gemspec +14 -11
  84. data/web/assets/images/logo.png +0 -0
  85. data/web/assets/images/status.png +0 -0
  86. data/web/assets/javascripts/application.js +171 -57
  87. data/web/assets/javascripts/base-charts.js +120 -0
  88. data/web/assets/javascripts/chart.min.js +13 -0
  89. data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
  90. data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
  91. data/web/assets/javascripts/dashboard-charts.js +194 -0
  92. data/web/assets/javascripts/dashboard.js +41 -274
  93. data/web/assets/javascripts/metrics.js +280 -0
  94. data/web/assets/stylesheets/style.css +776 -0
  95. data/web/locales/ar.yml +72 -70
  96. data/web/locales/cs.yml +64 -62
  97. data/web/locales/da.yml +62 -53
  98. data/web/locales/de.yml +67 -65
  99. data/web/locales/el.yml +45 -24
  100. data/web/locales/en.yml +93 -69
  101. data/web/locales/es.yml +91 -68
  102. data/web/locales/fa.yml +67 -65
  103. data/web/locales/fr.yml +82 -67
  104. data/web/locales/gd.yml +110 -0
  105. data/web/locales/he.yml +67 -64
  106. data/web/locales/hi.yml +61 -59
  107. data/web/locales/it.yml +94 -54
  108. data/web/locales/ja.yml +74 -68
  109. data/web/locales/ko.yml +54 -52
  110. data/web/locales/lt.yml +68 -66
  111. data/web/locales/nb.yml +63 -61
  112. data/web/locales/nl.yml +54 -52
  113. data/web/locales/pl.yml +47 -45
  114. data/web/locales/{pt-br.yml → pt-BR.yml} +85 -56
  115. data/web/locales/pt.yml +53 -51
  116. data/web/locales/ru.yml +69 -66
  117. data/web/locales/sv.yml +55 -53
  118. data/web/locales/ta.yml +62 -60
  119. data/web/locales/tr.yml +102 -0
  120. data/web/locales/uk.yml +87 -61
  121. data/web/locales/ur.yml +66 -64
  122. data/web/locales/vi.yml +69 -67
  123. data/web/locales/zh-CN.yml +107 -0
  124. data/web/locales/{zh-tw.yml → zh-TW.yml} +44 -9
  125. data/web/views/_footer.html.erb +32 -0
  126. data/web/views/_job_info.html.erb +115 -0
  127. data/web/views/_metrics_period_select.html.erb +15 -0
  128. data/web/views/_nav.html.erb +45 -0
  129. data/web/views/_paging.html.erb +26 -0
  130. data/web/views/_poll_link.html.erb +4 -0
  131. data/web/views/_summary.html.erb +40 -0
  132. data/web/views/busy.html.erb +151 -0
  133. data/web/views/dashboard.html.erb +104 -0
  134. data/web/views/dead.html.erb +38 -0
  135. data/web/views/filtering.html.erb +6 -0
  136. data/web/views/layout.html.erb +26 -0
  137. data/web/views/metrics.html.erb +85 -0
  138. data/web/views/metrics_for_job.html.erb +58 -0
  139. data/web/views/morgue.html.erb +69 -0
  140. data/web/views/profiles.html.erb +43 -0
  141. data/web/views/queue.html.erb +57 -0
  142. data/web/views/queues.html.erb +46 -0
  143. data/web/views/retries.html.erb +77 -0
  144. data/web/views/retry.html.erb +39 -0
  145. data/web/views/scheduled.html.erb +64 -0
  146. data/web/views/{scheduled_job_info.erb → scheduled_job_info.html.erb} +3 -3
  147. metadata +130 -61
  148. data/LICENSE +0 -9
  149. data/lib/generators/sidekiq/worker_generator.rb +0 -57
  150. data/lib/sidekiq/delay.rb +0 -41
  151. data/lib/sidekiq/exception_handler.rb +0 -27
  152. data/lib/sidekiq/extensions/action_mailer.rb +0 -48
  153. data/lib/sidekiq/extensions/active_record.rb +0 -43
  154. data/lib/sidekiq/extensions/class_methods.rb +0 -43
  155. data/lib/sidekiq/extensions/generic_proxy.rb +0 -33
  156. data/lib/sidekiq/util.rb +0 -95
  157. data/lib/sidekiq/web/csrf_protection.rb +0 -180
  158. data/lib/sidekiq/worker.rb +0 -244
  159. data/web/assets/stylesheets/application-dark.css +0 -147
  160. data/web/assets/stylesheets/application-rtl.css +0 -246
  161. data/web/assets/stylesheets/application.css +0 -1053
  162. data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
  163. data/web/assets/stylesheets/bootstrap.css +0 -5
  164. data/web/locales/zh-cn.yml +0 -68
  165. data/web/views/_footer.erb +0 -20
  166. data/web/views/_job_info.erb +0 -89
  167. data/web/views/_nav.erb +0 -52
  168. data/web/views/_paging.erb +0 -23
  169. data/web/views/_poll_link.erb +0 -7
  170. data/web/views/_status.erb +0 -4
  171. data/web/views/_summary.erb +0 -40
  172. data/web/views/busy.erb +0 -132
  173. data/web/views/dashboard.erb +0 -83
  174. data/web/views/dead.erb +0 -34
  175. data/web/views/layout.erb +0 -42
  176. data/web/views/morgue.erb +0 -78
  177. data/web/views/queue.erb +0 -55
  178. data/web/views/queues.erb +0 -38
  179. data/web/views/retries.erb +0 -83
  180. data/web/views/retry.erb +0 -34
  181. data/web/views/scheduled.erb +0 -57
metadata CHANGED
@@ -1,126 +1,190 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.2.2
4
+ version: 8.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-08-23 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
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: 4.2.0
18
+ version: 0.29.0
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: 4.2.0
25
+ version: 0.29.0
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: connection_pool
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: 2.2.2
32
+ version: 3.0.0
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: 2.2.2
39
+ version: 3.0.0
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: rack
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - "~>"
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 3.2.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 3.2.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: json
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
46
59
  - !ruby/object:Gem::Version
47
- version: '2.0'
60
+ version: 2.16.0
48
61
  type: :runtime
49
62
  prerelease: false
50
63
  version_requirements: !ruby/object:Gem::Requirement
51
64
  requirements:
52
- - - "~>"
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 2.16.0
68
+ - !ruby/object:Gem::Dependency
69
+ name: logger
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.7.0
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
53
80
  - !ruby/object:Gem::Version
54
- version: '2.0'
81
+ version: 1.7.0
55
82
  description: Simple, efficient background processing for Ruby.
56
83
  email:
57
- - mperham@gmail.com
84
+ - info@contribsys.com
58
85
  executables:
86
+ - kiq
59
87
  - sidekiq
60
88
  - sidekiqmon
61
89
  extensions: []
62
90
  extra_rdoc_files: []
63
91
  files:
64
92
  - Changes.md
65
- - LICENSE
93
+ - LICENSE.txt
66
94
  - README.md
95
+ - bin/kiq
96
+ - bin/lint-herb
97
+ - bin/multi_queue_bench
67
98
  - bin/sidekiq
68
99
  - bin/sidekiqload
69
100
  - bin/sidekiqmon
70
- - lib/generators/sidekiq/templates/worker.rb.erb
71
- - lib/generators/sidekiq/templates/worker_spec.rb.erb
72
- - lib/generators/sidekiq/templates/worker_test.rb.erb
73
- - lib/generators/sidekiq/worker_generator.rb
101
+ - bin/webload
102
+ - lib/active_job/queue_adapters/sidekiq_adapter.rb
103
+ - lib/generators/sidekiq/job_generator.rb
104
+ - lib/generators/sidekiq/templates/job.rb.erb
105
+ - lib/generators/sidekiq/templates/job_spec.rb.erb
106
+ - lib/generators/sidekiq/templates/job_test.rb.erb
74
107
  - lib/sidekiq.rb
75
108
  - lib/sidekiq/api.rb
109
+ - lib/sidekiq/capsule.rb
76
110
  - lib/sidekiq/cli.rb
77
111
  - lib/sidekiq/client.rb
78
- - lib/sidekiq/delay.rb
79
- - lib/sidekiq/exception_handler.rb
80
- - lib/sidekiq/extensions/action_mailer.rb
81
- - lib/sidekiq/extensions/active_record.rb
82
- - lib/sidekiq/extensions/class_methods.rb
83
- - lib/sidekiq/extensions/generic_proxy.rb
112
+ - lib/sidekiq/component.rb
113
+ - lib/sidekiq/config.rb
114
+ - lib/sidekiq/deploy.rb
115
+ - lib/sidekiq/embedded.rb
84
116
  - lib/sidekiq/fetch.rb
117
+ - lib/sidekiq/iterable_job.rb
85
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
86
124
  - lib/sidekiq/job_logger.rb
87
125
  - lib/sidekiq/job_retry.rb
126
+ - lib/sidekiq/job_util.rb
88
127
  - lib/sidekiq/launcher.rb
128
+ - lib/sidekiq/loader.rb
89
129
  - lib/sidekiq/logger.rb
90
130
  - lib/sidekiq/manager.rb
131
+ - lib/sidekiq/metrics/query.rb
132
+ - lib/sidekiq/metrics/shared.rb
133
+ - lib/sidekiq/metrics/tracking.rb
91
134
  - lib/sidekiq/middleware/chain.rb
135
+ - lib/sidekiq/middleware/current_attributes.rb
92
136
  - lib/sidekiq/middleware/i18n.rb
137
+ - lib/sidekiq/middleware/modules.rb
93
138
  - lib/sidekiq/monitor.rb
94
139
  - lib/sidekiq/paginator.rb
95
140
  - lib/sidekiq/processor.rb
141
+ - lib/sidekiq/profiler.rb
96
142
  - lib/sidekiq/rails.rb
143
+ - lib/sidekiq/redis_client_adapter.rb
97
144
  - lib/sidekiq/redis_connection.rb
145
+ - lib/sidekiq/ring_buffer.rb
98
146
  - lib/sidekiq/scheduled.rb
99
147
  - lib/sidekiq/sd_notify.rb
100
148
  - lib/sidekiq/systemd.rb
149
+ - lib/sidekiq/test_api.rb
101
150
  - lib/sidekiq/testing.rb
102
151
  - lib/sidekiq/testing/inline.rb
103
- - lib/sidekiq/util.rb
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
104
166
  - lib/sidekiq/version.rb
105
167
  - lib/sidekiq/web.rb
106
168
  - lib/sidekiq/web/action.rb
107
169
  - lib/sidekiq/web/application.rb
108
- - lib/sidekiq/web/csrf_protection.rb
170
+ - lib/sidekiq/web/config.rb
109
171
  - lib/sidekiq/web/helpers.rb
110
172
  - lib/sidekiq/web/router.rb
111
- - lib/sidekiq/worker.rb
173
+ - lib/sidekiq/worker_compatibility_alias.rb
112
174
  - sidekiq.gemspec
113
175
  - web/assets/images/apple-touch-icon.png
114
176
  - web/assets/images/favicon.ico
115
177
  - web/assets/images/logo.png
116
178
  - web/assets/images/status.png
117
179
  - web/assets/javascripts/application.js
180
+ - web/assets/javascripts/base-charts.js
181
+ - web/assets/javascripts/chart.min.js
182
+ - web/assets/javascripts/chartjs-adapter-date-fns.min.js
183
+ - web/assets/javascripts/chartjs-plugin-annotation.min.js
184
+ - web/assets/javascripts/dashboard-charts.js
118
185
  - web/assets/javascripts/dashboard.js
119
- - web/assets/stylesheets/application-dark.css
120
- - web/assets/stylesheets/application-rtl.css
121
- - web/assets/stylesheets/application.css
122
- - web/assets/stylesheets/bootstrap-rtl.min.css
123
- - web/assets/stylesheets/bootstrap.css
186
+ - web/assets/javascripts/metrics.js
187
+ - web/assets/stylesheets/style.css
124
188
  - web/locales/ar.yml
125
189
  - web/locales/cs.yml
126
190
  - web/locales/da.yml
@@ -130,6 +194,7 @@ files:
130
194
  - web/locales/es.yml
131
195
  - web/locales/fa.yml
132
196
  - web/locales/fr.yml
197
+ - web/locales/gd.yml
133
198
  - web/locales/he.yml
134
199
  - web/locales/hi.yml
135
200
  - web/locales/it.yml
@@ -139,44 +204,49 @@ files:
139
204
  - web/locales/nb.yml
140
205
  - web/locales/nl.yml
141
206
  - web/locales/pl.yml
142
- - web/locales/pt-br.yml
207
+ - web/locales/pt-BR.yml
143
208
  - web/locales/pt.yml
144
209
  - web/locales/ru.yml
145
210
  - web/locales/sv.yml
146
211
  - web/locales/ta.yml
212
+ - web/locales/tr.yml
147
213
  - web/locales/uk.yml
148
214
  - web/locales/ur.yml
149
215
  - web/locales/vi.yml
150
- - web/locales/zh-cn.yml
151
- - web/locales/zh-tw.yml
152
- - web/views/_footer.erb
153
- - web/views/_job_info.erb
154
- - web/views/_nav.erb
155
- - web/views/_paging.erb
156
- - web/views/_poll_link.erb
157
- - web/views/_status.erb
158
- - web/views/_summary.erb
159
- - web/views/busy.erb
160
- - web/views/dashboard.erb
161
- - web/views/dead.erb
162
- - web/views/layout.erb
163
- - web/views/morgue.erb
164
- - web/views/queue.erb
165
- - web/views/queues.erb
166
- - web/views/retries.erb
167
- - web/views/retry.erb
168
- - web/views/scheduled.erb
169
- - 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
170
240
  homepage: https://sidekiq.org
171
241
  licenses:
172
242
  - LGPL-3.0
173
243
  metadata:
174
244
  homepage_uri: https://sidekiq.org
175
- bug_tracker_uri: https://github.com/mperham/sidekiq/issues
176
- documentation_uri: https://github.com/mperham/sidekiq/wiki
177
- changelog_uri: https://github.com/mperham/sidekiq/blob/master/Changes.md
178
- source_code_uri: https://github.com/mperham/sidekiq
179
- 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'
180
250
  rdoc_options: []
181
251
  require_paths:
182
252
  - lib
@@ -184,15 +254,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
254
  requirements:
185
255
  - - ">="
186
256
  - !ruby/object:Gem::Version
187
- version: 2.5.0
257
+ version: 3.2.0
188
258
  required_rubygems_version: !ruby/object:Gem::Requirement
189
259
  requirements:
190
260
  - - ">="
191
261
  - !ruby/object:Gem::Version
192
262
  version: '0'
193
263
  requirements: []
194
- rubygems_version: 3.1.4
195
- signing_key:
264
+ rubygems_version: 4.0.6
196
265
  specification_version: 4
197
266
  summary: Simple, efficient background processing for Ruby
198
267
  test_files: []
data/LICENSE DELETED
@@ -1,9 +0,0 @@
1
- Copyright (c) Contributed Systems LLC
2
-
3
- Sidekiq is an Open Source project licensed under the terms of
4
- the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
5
- for license text.
6
-
7
- Sidekiq Pro has a commercial-friendly license allowing private forks
8
- and modifications of Sidekiq. Please see https://sidekiq.org/products/pro.html for
9
- more detail. You can find the commercial license terms in COMM-LICENSE.txt.
@@ -1,57 +0,0 @@
1
- require "rails/generators/named_base"
2
-
3
- module Sidekiq
4
- module Generators # :nodoc:
5
- class WorkerGenerator < ::Rails::Generators::NamedBase # :nodoc:
6
- desc "This generator creates a Sidekiq Worker in app/workers and a corresponding test"
7
-
8
- check_class_collision suffix: "Worker"
9
-
10
- def self.default_generator_root
11
- File.dirname(__FILE__)
12
- end
13
-
14
- def create_worker_file
15
- template "worker.rb.erb", File.join("app/workers", class_path, "#{file_name}_worker.rb")
16
- end
17
-
18
- def create_test_file
19
- return unless test_framework
20
-
21
- if test_framework == :rspec
22
- create_worker_spec
23
- else
24
- create_worker_test
25
- end
26
- end
27
-
28
- private
29
-
30
- def create_worker_spec
31
- template_file = File.join(
32
- "spec/workers",
33
- class_path,
34
- "#{file_name}_worker_spec.rb"
35
- )
36
- template "worker_spec.rb.erb", template_file
37
- end
38
-
39
- def create_worker_test
40
- template_file = File.join(
41
- "test/workers",
42
- class_path,
43
- "#{file_name}_worker_test.rb"
44
- )
45
- template "worker_test.rb.erb", template_file
46
- end
47
-
48
- def file_name
49
- @_file_name ||= super.sub(/_?worker\z/i, "")
50
- end
51
-
52
- def test_framework
53
- ::Rails.application.config.generators.options[:rails][:test_framework]
54
- end
55
- end
56
- end
57
- end
data/lib/sidekiq/delay.rb DELETED
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sidekiq
4
- module Extensions
5
- def self.enable_delay!
6
- if defined?(::ActiveSupport)
7
- require "sidekiq/extensions/active_record"
8
- require "sidekiq/extensions/action_mailer"
9
-
10
- # Need to patch Psych so it can autoload classes whose names are serialized
11
- # in the delayed YAML.
12
- Psych::Visitors::ToRuby.prepend(Sidekiq::Extensions::PsychAutoload)
13
-
14
- ActiveSupport.on_load(:active_record) do
15
- include Sidekiq::Extensions::ActiveRecord
16
- end
17
- ActiveSupport.on_load(:action_mailer) do
18
- extend Sidekiq::Extensions::ActionMailer
19
- end
20
- end
21
-
22
- require "sidekiq/extensions/class_methods"
23
- Module.__send__(:include, Sidekiq::Extensions::Klass)
24
- end
25
-
26
- module PsychAutoload
27
- def resolve_class(klass_name)
28
- return nil if !klass_name || klass_name.empty?
29
- # constantize
30
- names = klass_name.split("::")
31
- names.shift if names.empty? || names.first.empty?
32
-
33
- names.inject(Object) do |constant, name|
34
- constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
35
- end
36
- rescue NameError
37
- super
38
- end
39
- end
40
- end
41
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "sidekiq"
4
-
5
- module Sidekiq
6
- module ExceptionHandler
7
- class Logger
8
- def call(ex, ctx)
9
- Sidekiq.logger.warn(Sidekiq.dump_json(ctx)) unless ctx.empty?
10
- Sidekiq.logger.warn("#{ex.class.name}: #{ex.message}")
11
- Sidekiq.logger.warn(ex.backtrace.join("\n")) unless ex.backtrace.nil?
12
- end
13
-
14
- Sidekiq.error_handlers << Sidekiq::ExceptionHandler::Logger.new
15
- end
16
-
17
- def handle_exception(ex, ctx = {})
18
- Sidekiq.error_handlers.each do |handler|
19
- handler.call(ex, ctx)
20
- rescue => ex
21
- Sidekiq.logger.error "!!! ERROR HANDLER THREW AN ERROR !!!"
22
- Sidekiq.logger.error ex
23
- Sidekiq.logger.error ex.backtrace.join("\n") unless ex.backtrace.nil?
24
- end
25
- end
26
- end
27
- 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
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