sidekiq 4.2.4 → 6.2.1

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 (134) hide show
  1. checksums.yaml +5 -5
  2. data/Changes.md +445 -0
  3. data/LICENSE +1 -1
  4. data/README.md +21 -34
  5. data/bin/sidekiq +26 -2
  6. data/bin/sidekiqload +28 -38
  7. data/bin/sidekiqmon +8 -0
  8. data/lib/generators/sidekiq/templates/worker_spec.rb.erb +1 -1
  9. data/lib/generators/sidekiq/templates/worker_test.rb.erb +2 -2
  10. data/lib/generators/sidekiq/worker_generator.rb +21 -13
  11. data/lib/sidekiq/api.rb +347 -213
  12. data/lib/sidekiq/cli.rb +221 -212
  13. data/lib/sidekiq/client.rb +75 -52
  14. data/lib/sidekiq/delay.rb +41 -0
  15. data/lib/sidekiq/exception_handler.rb +12 -16
  16. data/lib/sidekiq/extensions/action_mailer.rb +13 -22
  17. data/lib/sidekiq/extensions/active_record.rb +13 -10
  18. data/lib/sidekiq/extensions/class_methods.rb +14 -11
  19. data/lib/sidekiq/extensions/generic_proxy.rb +10 -4
  20. data/lib/sidekiq/fetch.rb +38 -31
  21. data/lib/sidekiq/job_logger.rb +63 -0
  22. data/lib/sidekiq/job_retry.rb +263 -0
  23. data/lib/sidekiq/launcher.rb +169 -70
  24. data/lib/sidekiq/logger.rb +166 -0
  25. data/lib/sidekiq/manager.rb +17 -20
  26. data/lib/sidekiq/middleware/chain.rb +15 -5
  27. data/lib/sidekiq/middleware/i18n.rb +5 -7
  28. data/lib/sidekiq/monitor.rb +133 -0
  29. data/lib/sidekiq/paginator.rb +18 -14
  30. data/lib/sidekiq/processor.rb +161 -70
  31. data/lib/sidekiq/rails.rb +30 -73
  32. data/lib/sidekiq/redis_connection.rb +67 -20
  33. data/lib/sidekiq/scheduled.rb +61 -35
  34. data/lib/sidekiq/sd_notify.rb +149 -0
  35. data/lib/sidekiq/systemd.rb +24 -0
  36. data/lib/sidekiq/testing/inline.rb +2 -1
  37. data/lib/sidekiq/testing.rb +54 -26
  38. data/lib/sidekiq/util.rb +48 -15
  39. data/lib/sidekiq/version.rb +2 -1
  40. data/lib/sidekiq/web/action.rb +15 -15
  41. data/lib/sidekiq/web/application.rb +112 -89
  42. data/lib/sidekiq/web/csrf_protection.rb +180 -0
  43. data/lib/sidekiq/web/helpers.rb +153 -73
  44. data/lib/sidekiq/web/router.rb +27 -19
  45. data/lib/sidekiq/web.rb +64 -109
  46. data/lib/sidekiq/worker.rb +164 -41
  47. data/lib/sidekiq.rb +86 -60
  48. data/sidekiq.gemspec +24 -22
  49. data/web/assets/images/apple-touch-icon.png +0 -0
  50. data/web/assets/javascripts/application.js +25 -27
  51. data/web/assets/javascripts/dashboard.js +34 -38
  52. data/web/assets/stylesheets/application-dark.css +160 -0
  53. data/web/assets/stylesheets/application-rtl.css +246 -0
  54. data/web/assets/stylesheets/application.css +402 -12
  55. data/web/assets/stylesheets/bootstrap-rtl.min.css +9 -0
  56. data/web/assets/stylesheets/bootstrap.css +2 -2
  57. data/web/locales/ar.yml +81 -0
  58. data/web/locales/de.yml +14 -2
  59. data/web/locales/en.yml +4 -0
  60. data/web/locales/es.yml +4 -3
  61. data/web/locales/fa.yml +80 -0
  62. data/web/locales/fr.yml +3 -3
  63. data/web/locales/he.yml +79 -0
  64. data/web/locales/ja.yml +9 -4
  65. data/web/locales/lt.yml +83 -0
  66. data/web/locales/pl.yml +4 -4
  67. data/web/locales/ru.yml +4 -0
  68. data/web/locales/ur.yml +80 -0
  69. data/web/locales/vi.yml +83 -0
  70. data/web/views/_footer.erb +5 -2
  71. data/web/views/_job_info.erb +3 -2
  72. data/web/views/_nav.erb +4 -18
  73. data/web/views/_paging.erb +1 -1
  74. data/web/views/busy.erb +57 -19
  75. data/web/views/dashboard.erb +3 -3
  76. data/web/views/dead.erb +2 -2
  77. data/web/views/layout.erb +13 -2
  78. data/web/views/morgue.erb +19 -12
  79. data/web/views/queue.erb +22 -12
  80. data/web/views/queues.erb +13 -3
  81. data/web/views/retries.erb +22 -13
  82. data/web/views/retry.erb +3 -3
  83. data/web/views/scheduled.erb +7 -4
  84. metadata +42 -194
  85. data/.github/contributing.md +0 -32
  86. data/.github/issue_template.md +0 -4
  87. data/.gitignore +0 -12
  88. data/.travis.yml +0 -12
  89. data/3.0-Upgrade.md +0 -70
  90. data/4.0-Upgrade.md +0 -53
  91. data/COMM-LICENSE +0 -95
  92. data/Ent-Changes.md +0 -146
  93. data/Gemfile +0 -29
  94. data/Pro-2.0-Upgrade.md +0 -138
  95. data/Pro-3.0-Upgrade.md +0 -44
  96. data/Pro-Changes.md +0 -585
  97. data/Rakefile +0 -9
  98. data/bin/sidekiqctl +0 -99
  99. data/code_of_conduct.md +0 -50
  100. data/lib/sidekiq/core_ext.rb +0 -106
  101. data/lib/sidekiq/logging.rb +0 -106
  102. data/lib/sidekiq/middleware/server/active_record.rb +0 -13
  103. data/lib/sidekiq/middleware/server/logging.rb +0 -40
  104. data/lib/sidekiq/middleware/server/retry_jobs.rb +0 -205
  105. data/test/config.yml +0 -9
  106. data/test/env_based_config.yml +0 -11
  107. data/test/fake_env.rb +0 -1
  108. data/test/fixtures/en.yml +0 -2
  109. data/test/helper.rb +0 -75
  110. data/test/test_actors.rb +0 -138
  111. data/test/test_api.rb +0 -528
  112. data/test/test_cli.rb +0 -418
  113. data/test/test_client.rb +0 -266
  114. data/test/test_exception_handler.rb +0 -56
  115. data/test/test_extensions.rb +0 -127
  116. data/test/test_fetch.rb +0 -50
  117. data/test/test_launcher.rb +0 -95
  118. data/test/test_logging.rb +0 -35
  119. data/test/test_manager.rb +0 -50
  120. data/test/test_middleware.rb +0 -158
  121. data/test/test_processor.rb +0 -235
  122. data/test/test_rails.rb +0 -22
  123. data/test/test_redis_connection.rb +0 -132
  124. data/test/test_retry.rb +0 -326
  125. data/test/test_retry_exhausted.rb +0 -149
  126. data/test/test_scheduled.rb +0 -115
  127. data/test/test_scheduling.rb +0 -58
  128. data/test/test_sidekiq.rb +0 -107
  129. data/test/test_testing.rb +0 -143
  130. data/test/test_testing_fake.rb +0 -357
  131. data/test/test_testing_inline.rb +0 -94
  132. data/test/test_util.rb +0 -13
  133. data/test/test_web.rb +0 -726
  134. data/test/test_web_helpers.rb +0 -54
@@ -0,0 +1,160 @@
1
+ html, body {
2
+ background-color: #333 !important;
3
+ color: #ddd;
4
+ }
5
+
6
+ a,
7
+ .title,
8
+ .summary_bar ul .count,
9
+ span.current-interval,
10
+ .navbar .navbar-brand {
11
+ color: #c04;
12
+ }
13
+
14
+ .history-graph + .active,
15
+ .beacon .dot {
16
+ background-color: #c04;
17
+ }
18
+
19
+ .navbar .navbar-brand:hover {
20
+ color: #ddd;
21
+ }
22
+
23
+ .navbar .navbar-brand .status {
24
+ color: #ddd;
25
+ }
26
+
27
+ .navbar-default .navbar-nav > li > a {
28
+ color: #ddd;
29
+ }
30
+
31
+ .navbar-inverse {
32
+ background-color: #222;
33
+ border-color: #555;
34
+ }
35
+
36
+ table {
37
+ background-color: #282828;
38
+ }
39
+
40
+ .table-striped > tbody > tr:nth-of-type(odd) {
41
+ background-color: #333;
42
+ }
43
+
44
+ .table-bordered,
45
+ .table-bordered > tbody > tr > td,
46
+ .table-bordered > tbody > tr > th,
47
+ .table-bordered > tfoot > tr > td,
48
+ .table-bordered > tfoot > tr > th,
49
+ .table-bordered > thead > tr > td,
50
+ .table-bordered > thead > tr > th {
51
+ border: 1px solid #555;
52
+ }
53
+
54
+ .table-hover > tbody > tr:hover {
55
+ background-color: #444;
56
+ }
57
+
58
+ .alert {
59
+ border: none;
60
+ color: #ddd;
61
+ }
62
+
63
+ .alert-success {
64
+ background-color: #484;
65
+ }
66
+
67
+ a:link,
68
+ a:active,
69
+ a:hover,
70
+ a:visited {
71
+ color: #ddd;
72
+ }
73
+
74
+ a.btn {
75
+ color: #000;
76
+ }
77
+
78
+ input {
79
+ background-color: #444;
80
+ color: #ccc;
81
+ padding: 3px;
82
+ }
83
+
84
+ .summary_bar .summary {
85
+ background-color: #222;
86
+ border: 1px solid #555;
87
+
88
+ -webkit-box-shadow: 0 0 5px rgba(255, 255, 255, 0.1);
89
+ -moz-box-shadow: 0 0 5px rgba(255, 255, 255, 0.1);
90
+ box-shadow: 0 0 5px rgba(255, 255, 255, 0.1);
91
+ }
92
+
93
+ .navbar-default {
94
+ background-color: #222;
95
+ border-color: #555;
96
+ }
97
+
98
+ .navbar-default .navbar-nav > .active > a,
99
+ .navbar-default .navbar-nav > .active > a:focus,
100
+ .navbar-default .navbar-nav > .active > a:hover {
101
+ color: #ddd;
102
+ background-color: #333;
103
+ }
104
+
105
+ .navbar-default .navbar-nav > li > a:hover {
106
+ color: #ddd;
107
+ }
108
+
109
+ .pagination > li > a,
110
+ .pagination > li > a:hover,
111
+ .pagination > li > span {
112
+ color: #ddd;
113
+ background-color: #333;
114
+ border-color: #555;
115
+ }
116
+ .pagination > .disabled > a,
117
+ .pagination > .disabled > a:focus,
118
+ .pagination > .disabled > a:hover,
119
+ .pagination > .disabled > span,
120
+ .pagination > .disabled > span:focus,
121
+ .pagination > .disabled > span:hover {
122
+ color: #ddd;
123
+ background-color: #333;
124
+ border-color: #555;
125
+ }
126
+
127
+ .stat {
128
+ border: 1px solid rgba(255, 255, 255, 0.1);
129
+ }
130
+
131
+ #live-poll {
132
+ color: #ddd;
133
+ }
134
+
135
+ .btn-warn {
136
+ color: #444;
137
+ }
138
+
139
+ .rickshaw_graph .detail {
140
+ background: rgba(255, 255, 255, .1)
141
+ }
142
+ .rickshaw_graph .x_tick {
143
+ border-color: rgba(255, 255, 255, .2);
144
+ }
145
+
146
+ .rickshaw_graph .y_ticks.glow text {
147
+ fill: #ddd;
148
+ color: #ddd;
149
+ }
150
+
151
+ .info-circle {
152
+ color: #282828;
153
+ background-color: #555555;
154
+ border-radius: 50%;
155
+ text-align: center;
156
+ vertical-align: middle;
157
+ padding: 3px 7px;
158
+ font-size: 0.7em;
159
+ margin-left: 5px;
160
+ }
@@ -0,0 +1,246 @@
1
+ .navbar-right {
2
+ float: left !important;
3
+ }
4
+
5
+ footer .edits {
6
+ margin-right: unset;
7
+ margin-left: 40px;
8
+ }
9
+
10
+ .summary_bar .status {
11
+ margin-left: unset;
12
+ margin-right: 10px;
13
+ }
14
+ @media (max-width: 767px) and (min-width: 400px) {
15
+ .summary_bar ul .desc {
16
+ text-align: right;
17
+ }
18
+ .summary_bar ul .count {
19
+ text-align: left;
20
+ }
21
+ }
22
+ @media (max-width: 979px) and (min-width: 768px) {
23
+ }
24
+ .summary_bar ul .count {
25
+ float: left;
26
+ }
27
+
28
+ form .btn {
29
+ margin-right: unset;
30
+ margin-left: 5px;
31
+ }
32
+
33
+ form .btn-group .btn {
34
+ margin-right: unset;
35
+ margin-left: 1px;
36
+ }
37
+
38
+ @media (max-width: 768px) {
39
+ .navbar.navbar-fixed-top ul {
40
+ margin-right: unset;
41
+ margin-left: -15px!important;
42
+ }
43
+ }
44
+
45
+ @media (width: 768px) {
46
+ .navbar .poll-wrapper {
47
+ margin: 4px 0 0 4px;
48
+ }
49
+
50
+ .navbar .dropdown-menu a {
51
+ text-align: right;
52
+ }
53
+ }
54
+
55
+ .navbar-footer .navbar ul.nav a.navbar-brand {
56
+ padding: 0 0 0 15px;
57
+ }
58
+
59
+ .navbar-fixed-bottom li {
60
+ margin-right: unset;
61
+ margin-left: 20px;
62
+ }
63
+
64
+ .status-active {
65
+ background-position: 100% 0;
66
+ }
67
+
68
+ .status-idle {
69
+ background-position: 100% -54px;
70
+ }
71
+
72
+ .stat {
73
+ float: right;
74
+ margin-right: unset;
75
+ margin-left: 20px;
76
+ }
77
+
78
+ .stat:last-child {
79
+ margin-left: 0;
80
+ }
81
+
82
+ @media (max-width: 767px) {
83
+ .stat {
84
+ float: right;
85
+ margin-right: unset;
86
+ margin-left: 10px;
87
+ text-align: right;
88
+ }
89
+ .stat h3{
90
+ float: left;
91
+ margin: 5px 5px 5px 10px;
92
+ }
93
+ .stat p{
94
+ font-size: 1em;
95
+ margin: 5px 10px 5px 5px;
96
+ }
97
+ }
98
+
99
+ /* Dashboard
100
+ ********************************** */
101
+ div.dashboard h3 {
102
+ float: right;
103
+ }
104
+
105
+ div.interval-slider {
106
+ float: left;
107
+ }
108
+
109
+ #realtime-legend,
110
+ #history-legend {
111
+ text-align: right;
112
+ float: left;
113
+ }
114
+ #realtime-legend .timestamp,
115
+ #history-legend .timestamp {
116
+ text-align: left;
117
+ }
118
+ #realtime-legend .line,
119
+ #history-legend .line {
120
+ margin: 0 20px 0 0;
121
+ }
122
+ #realtime-legend .swatch,
123
+ #history-legend .swatch {
124
+ margin: 0 0 0 8px;
125
+ }
126
+
127
+ /* Beacon
128
+ ********************************** */
129
+
130
+ .beacon .dot,
131
+ .beacon .ring {
132
+ right: 50%;
133
+ }
134
+
135
+ .beacon .dot {
136
+ margin: -5px -5px 0 0;
137
+ }
138
+
139
+ .beacon .ring {
140
+ margin: -14px -14px 0 0;
141
+ }
142
+
143
+ .history-heading {
144
+ padding-right: unset;
145
+ padding-left: 15px;
146
+ }
147
+
148
+ @media (max-width: 767px) {
149
+ .navbar.navbar-fixed-top ul {
150
+ margin-left: 0;
151
+ }
152
+
153
+ .navbar.navbar-fixed-top li {
154
+ margin-left: 0;
155
+ }
156
+
157
+ .navbar.navbar-fixed-bottom ul {
158
+ margin-left: 0;
159
+ }
160
+
161
+ .navbar.navbar-fixed-bottom li {
162
+ margin-left: 0;
163
+ }
164
+ }
165
+
166
+ @media (max-width: 500px) {
167
+ .navbar-footer .navbar ul.nav a.navbar-brand {
168
+ padding-right: unset;
169
+ padding-left: 5px;
170
+ }
171
+ }
172
+
173
+ /* Rickshaw */
174
+
175
+ .rickshaw_graph .detail .x_label.left {
176
+ right: 0
177
+ }
178
+ .rickshaw_graph .detail .x_label.right {
179
+ left: 0
180
+ }
181
+ .rickshaw_graph .detail .item.left {
182
+ right: 0
183
+ }
184
+ .rickshaw_graph .detail .item.right {
185
+ left: 0
186
+ }
187
+ .rickshaw_graph .detail .item.left:after {
188
+ left: 0;
189
+ right: -5px;
190
+ border-right-color: unset;
191
+ border-left-color: rgba(0, 0, 0, .8);
192
+ border-right-width: 0;
193
+ border-left-width: unset;
194
+ }
195
+ .rickshaw_graph .detail .item.right:after {
196
+ right: 0;
197
+ left: -5px;
198
+ border-left-color: unset;
199
+ border-right-color: rgba(0, 0, 0, .8);
200
+ border-left-width: 0;
201
+ border-right-width: unset;
202
+ }
203
+ .rickshaw_graph .detail .dot {
204
+ margin-right: -3px;
205
+ margin-left: unset;
206
+ }
207
+ .rickshaw_graph .x_tick {
208
+ border-left: unset;
209
+ border-right: 1px dotted rgba(0, 0, 0, .2);
210
+ }
211
+ .rickshaw_graph .x_tick .title {
212
+ margin-right: 3px;
213
+ margin-left: unset;
214
+ }
215
+ .rickshaw_annotation_timeline .annotation {
216
+ margin-right: -2px;
217
+ margin-left: unset;
218
+ }
219
+ .rickshaw_graph .annotation_line {
220
+ border-right: 2px solid rgba(0, 0, 0, .3);
221
+ border-left: unset;
222
+ }
223
+ .rickshaw_annotation_timeline .annotation .content {
224
+ left: unset;
225
+ right: -11px;
226
+ }
227
+ .rickshaw_graph .x_tick.glow .title,
228
+ .rickshaw_graph .y_ticks.glow text {
229
+ text-shadow: 1px 1px 0 rgba(255, 255, 255, .1), -1px -1px 0 rgba(255, 255, 255, .1), -1px 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1), 0 -1px 0 rgba(255, 255, 255, .1), -1px 0 0 rgba(255, 255, 255, .1), 1px 0 0 rgba(255, 255, 255, .1), 1px -1px 0 rgba(255, 255, 255, .1)
230
+ }
231
+ .rickshaw_graph .x_tick.inverse .title,
232
+ .rickshaw_graph .y_ticks.inverse text {
233
+ text-shadow: 1px 1px 0 rgba(0, 0, 0, .8), -1px -1px 0 rgba(0, 0, 0, .8), -1px 1px 0 rgba(0, 0, 0, .8), 0 1px 0 rgba(0, 0, 0, .8), 0 -1px 0 rgba(0, 0, 0, .8), -1px 0 0 rgba(0, 0, 0, .8), 1px 0 0 rgba(0, 0, 0, .8), 1px -1px 0 rgba(0, 0, 0, .8)
234
+ }
235
+ .rickshaw_legend .line {
236
+ padding-left: 15px;
237
+ padding-right: unset;
238
+ }
239
+ .rickshaw_legend .line .swatch {
240
+ margin-left: 3px;
241
+ margin-right: unset;
242
+ }
243
+ .rickshaw_legend .action {
244
+ margin-left: .2em;
245
+ margin-right: unset;
246
+ }