sidekiq 2.15.2 → 2.16.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/Changes.md +14 -0
- data/Contributing.md +1 -3
- data/Pro-Changes.md +7 -0
- data/lib/sidekiq.rb +1 -1
- data/lib/sidekiq/api.rb +17 -8
- data/lib/sidekiq/capistrano.rb +4 -53
- data/lib/sidekiq/capistrano2.rb +54 -0
- data/lib/sidekiq/cli.rb +1 -0
- data/lib/sidekiq/client.rb +122 -91
- data/lib/sidekiq/core_ext.rb +17 -0
- data/lib/sidekiq/middleware/chain.rb +4 -0
- data/lib/sidekiq/middleware/server/retry_jobs.rb +4 -2
- data/lib/sidekiq/redis_connection.rb +27 -15
- data/lib/sidekiq/tasks/sidekiq.rake +92 -0
- data/lib/sidekiq/testing.rb +14 -16
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web.rb +1 -1
- data/lib/sidekiq/web_helpers.rb +21 -2
- data/test/fixtures/en.yml +2 -0
- data/test/test_client.rb +26 -8
- data/test/test_extensions.rb +6 -6
- data/test/test_redis_connection.rb +14 -0
- data/test/test_retry.rb +5 -5
- data/test/test_web.rb +16 -0
- data/web/assets/stylesheets/application.css +2 -11
- data/web/locales/en.yml +0 -1
- data/web/views/_nav.erb +1 -1
- data/web/views/_paging.erb +5 -5
- data/web/views/_poll.erb +5 -7
- data/web/views/_summary.erb +8 -8
- data/web/views/layout.erb +1 -1
- data/web/views/retries.erb +1 -1
- data/web/views/retry.erb +1 -1
- metadata +31 -51
data/test/test_retry.rb
CHANGED
@@ -210,7 +210,7 @@ class TestRetry < Sidekiq::Test
|
|
210
210
|
end
|
211
211
|
|
212
212
|
it 'calls worker.retries_exhausted after too many retries' do
|
213
|
-
assert_equal [1,2, "foo", "retried_method"], handler.retries_exhausted
|
213
|
+
assert_equal [1,2, "foo", "retried_method"], handler.send(:retries_exhausted, worker.new, msg)
|
214
214
|
end
|
215
215
|
end
|
216
216
|
|
@@ -226,7 +226,7 @@ class TestRetry < Sidekiq::Test
|
|
226
226
|
end
|
227
227
|
|
228
228
|
it 'calls worker sidekiq_retries_exhausted_block after too many retries' do
|
229
|
-
new_msg = handler.retries_exhausted
|
229
|
+
new_msg = handler.send(:retries_exhausted, worker.new, msg)
|
230
230
|
expected_msg = msg.merge('called_by_callback' => true)
|
231
231
|
|
232
232
|
assert_equal expected_msg, new_msg, "sidekiq_retries_exhausted block not called"
|
@@ -288,15 +288,15 @@ class TestRetry < Sidekiq::Test
|
|
288
288
|
let(:handler) { Sidekiq::Middleware::Server::RetryJobs.new }
|
289
289
|
|
290
290
|
it "retries with a default delay" do
|
291
|
-
refute_equal 4, handler.delay_for
|
291
|
+
refute_equal 4, handler.send(:delay_for, worker, 2)
|
292
292
|
end
|
293
293
|
|
294
294
|
it "retries with a custom delay" do
|
295
|
-
assert_equal 4, handler.delay_for
|
295
|
+
assert_equal 4, handler.send(:delay_for, custom_worker, 2)
|
296
296
|
end
|
297
297
|
|
298
298
|
it "falls back to the default retry on exception" do
|
299
|
-
refute_equal 4, handler.delay_for
|
299
|
+
refute_equal 4, handler.send(:delay_for, error_worker, 2)
|
300
300
|
assert_match(/Failure scheduling retry using the defined `sidekiq_retry_in`/,
|
301
301
|
File.read(@tmp_log_path), 'Log entry missing for sidekiq_retry_in')
|
302
302
|
end
|
data/test/test_web.rb
CHANGED
@@ -282,6 +282,22 @@ class TestWeb < Sidekiq::Test
|
|
282
282
|
assert_equal 200, last_response.status
|
283
283
|
end
|
284
284
|
|
285
|
+
Sidekiq::Web.settings.locales << File.join(File.dirname(__FILE__), "fixtures")
|
286
|
+
it 'can show user defined tab with custom locales' do
|
287
|
+
begin
|
288
|
+
Sidekiq::Web.tabs['Custom Tab'] = '/custom'
|
289
|
+
Sidekiq::Web.get('/custom') do
|
290
|
+
t('translated_text')
|
291
|
+
end
|
292
|
+
|
293
|
+
get '/custom'
|
294
|
+
assert_match /Changed text/, last_response.body
|
295
|
+
|
296
|
+
ensure
|
297
|
+
Sidekiq::Web.tabs.delete 'Custom Tab'
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
285
301
|
describe 'stats' do
|
286
302
|
before do
|
287
303
|
Sidekiq.redis do |conn|
|
@@ -82,18 +82,10 @@ h3 {
|
|
82
82
|
padding: 60px 0;
|
83
83
|
}
|
84
84
|
|
85
|
-
.row.header .actions {
|
86
|
-
padding-top: 0.9em;
|
87
|
-
}
|
88
|
-
|
89
85
|
header.row .pagination {
|
90
86
|
margin: 12px 0;
|
91
87
|
}
|
92
88
|
|
93
|
-
.summary_bar .actions {
|
94
|
-
padding: 10px 0px;
|
95
|
-
}
|
96
|
-
|
97
89
|
.summary_bar .status {
|
98
90
|
margin-left: 10px;
|
99
91
|
}
|
@@ -114,7 +106,7 @@ header.row .pagination {
|
|
114
106
|
border-width: 0px;
|
115
107
|
}
|
116
108
|
.poll-wrapper {
|
117
|
-
|
109
|
+
margin: 9px 0px;
|
118
110
|
}
|
119
111
|
.nav #live-poll {
|
120
112
|
height: 25px;
|
@@ -551,8 +543,7 @@ img.smallogo {
|
|
551
543
|
}
|
552
544
|
|
553
545
|
.poll-wrapper {
|
554
|
-
|
555
|
-
width: 20%;
|
546
|
+
margin: 0px 9px 9px;
|
556
547
|
}
|
557
548
|
|
558
549
|
.navbar.navbar-fixed-bottom ul {
|
data/web/locales/en.yml
CHANGED
data/web/views/_nav.erb
CHANGED
data/web/views/_paging.erb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
<% if @total_size > @count %>
|
2
2
|
<ul class="pagination pull-right">
|
3
3
|
<li class="<%= 'disabled' if @current_page == 1 %>">
|
4
|
-
<a href="<%= url %>?page=1"
|
4
|
+
<a href="<%= url %>?page=1">«</a>
|
5
5
|
</li>
|
6
6
|
<% if @current_page > 1 %>
|
7
7
|
<li>
|
8
|
-
<a href="<%= url
|
8
|
+
<a href="<%= url %>?<%= qparams(page: @current_page - 1) %>"><%= @current_page - 1 %></a>
|
9
9
|
</li>
|
10
10
|
<% end %>
|
11
11
|
<li class="disabled">
|
12
|
-
<a href="<%= url
|
12
|
+
<a href="<%= url %>?<%= qparams(page: @current_page) %>"><%= @current_page %></a>
|
13
13
|
</li>
|
14
14
|
<% if @total_size > @current_page * @count %>
|
15
15
|
<li>
|
16
|
-
<a href="<%= url
|
16
|
+
<a href="<%= url %>?<%= qparams(page: @current_page + 1) %>"><%= @current_page + 1 %></a>
|
17
17
|
</li>
|
18
18
|
<% end %>
|
19
19
|
<li class="<%= 'disabled' if @total_size <= @current_page * @count %>">
|
20
|
-
<a href="<%= url
|
20
|
+
<a href="<%= url %>?<%= qparams(page: (@total_size.to_f / @count).ceil) %>">»</a>
|
21
21
|
</li>
|
22
22
|
</ul>
|
23
23
|
<% end %>
|
data/web/views/_poll.erb
CHANGED
@@ -4,11 +4,9 @@
|
|
4
4
|
</script>
|
5
5
|
<% end %>
|
6
6
|
<% unless current_path == '' %>
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
<% end %>
|
13
|
-
</div>
|
7
|
+
<% if params[:poll] %>
|
8
|
+
<a id="live-poll" class="btn btn-primary active" href="<%= root_path %><%= current_path %>"><%= t('StopPolling') %></a>
|
9
|
+
<% else %>
|
10
|
+
<a id="live-poll" class="btn btn-primary" href="<%= root_path %><%= current_path %>?<%= qparams(poll: true) %>"><%= t('LivePoll') %></a>
|
11
|
+
<% end %>
|
14
12
|
<% end %>
|
data/web/views/_summary.erb
CHANGED
@@ -13,10 +13,10 @@
|
|
13
13
|
<span class="desc"><%= t('Busy') %></span>
|
14
14
|
</a>
|
15
15
|
</li>
|
16
|
-
<li class="
|
17
|
-
<a href="<%= root_path %>
|
18
|
-
<span class="count"><%= number_with_delimiter(stats.
|
19
|
-
<span class="desc"><%= t('
|
16
|
+
<li class="enqueued col-sm-2">
|
17
|
+
<a href="<%= root_path %>queues">
|
18
|
+
<span class="count"><%= number_with_delimiter(stats.enqueued) %></span>
|
19
|
+
<span class="desc"><%= t('Enqueued') %></span>
|
20
20
|
</a>
|
21
21
|
</li>
|
22
22
|
<li class="retries col-sm-2">
|
@@ -25,10 +25,10 @@
|
|
25
25
|
<span class="desc"><%= t('Retries') %></span>
|
26
26
|
</a>
|
27
27
|
</li>
|
28
|
-
<li class="
|
29
|
-
<a href="<%= root_path %>
|
30
|
-
<span class="count"><%= number_with_delimiter(stats.
|
31
|
-
<span class="desc"><%= t('
|
28
|
+
<li class="scheduled col-sm-2">
|
29
|
+
<a href="<%= root_path %>scheduled">
|
30
|
+
<span class="count"><%= number_with_delimiter(stats.scheduled_size) %></span>
|
31
|
+
<span class="desc"><%= t('Scheduled') %></span>
|
32
32
|
</a>
|
33
33
|
</li>
|
34
34
|
</ul>
|
data/web/views/layout.erb
CHANGED
@@ -35,7 +35,7 @@
|
|
35
35
|
<p class="navbar-text" style="color:white;">Sidekiq v<%= Sidekiq::VERSION %></p>
|
36
36
|
</li>
|
37
37
|
<li>
|
38
|
-
<p class="navbar-text">Redis: <%=
|
38
|
+
<p class="navbar-text">Redis: <%= redis_connection %></p>
|
39
39
|
</li>
|
40
40
|
<li>
|
41
41
|
<p class="navbar-text"><%= t('Time') %>: <%= Time.now.utc.strftime('%H:%M:%S UTC') %></p>
|
data/web/views/retries.erb
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
<div class="args"><%= display_args(msg['args']) %></div>
|
43
43
|
</td>
|
44
44
|
<td>
|
45
|
-
<div><%= truncate("#{msg['error_class']}: #{msg['error_message']}", 200) %></div>
|
45
|
+
<div><%= h truncate("#{msg['error_class']}: #{msg['error_message']}", 200) %></div>
|
46
46
|
</td>
|
47
47
|
</tr>
|
48
48
|
<% end %>
|
data/web/views/retry.erb
CHANGED
metadata
CHANGED
@@ -1,116 +1,102 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.16.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Mike Perham
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: redis
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 3.0.4
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.0.4
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: redis-namespace
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 1.3.1
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 1.3.1
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: connection_pool
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 1.0.0
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 1.0.0
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: celluloid
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 0.15.2
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 0.15.2
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: json
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: sinatra
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: minitest
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,7 +104,6 @@ dependencies:
|
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - ~>
|
124
109
|
- !ruby/object:Gem::Version
|
@@ -126,65 +111,57 @@ dependencies:
|
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: rake
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - '>='
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '0'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - '>='
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: actionmailer
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - '>='
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: 4.0.0
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - '>='
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: 4.0.0
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: activerecord
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
|
-
- -
|
143
|
+
- - '>='
|
164
144
|
- !ruby/object:Gem::Version
|
165
145
|
version: 4.0.0
|
166
146
|
type: :development
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
|
-
- -
|
150
|
+
- - '>='
|
172
151
|
- !ruby/object:Gem::Version
|
173
152
|
version: 4.0.0
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: coveralls
|
176
155
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
156
|
requirements:
|
179
|
-
- -
|
157
|
+
- - '>='
|
180
158
|
- !ruby/object:Gem::Version
|
181
159
|
version: '0'
|
182
160
|
type: :development
|
183
161
|
prerelease: false
|
184
162
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
163
|
requirements:
|
187
|
-
- -
|
164
|
+
- - '>='
|
188
165
|
- !ruby/object:Gem::Version
|
189
166
|
version: '0'
|
190
167
|
description: Simple, efficient background processing for Ruby
|
@@ -213,6 +190,7 @@ files:
|
|
213
190
|
- lib/sidekiq/actor.rb
|
214
191
|
- lib/sidekiq/api.rb
|
215
192
|
- lib/sidekiq/capistrano.rb
|
193
|
+
- lib/sidekiq/capistrano2.rb
|
216
194
|
- lib/sidekiq/cli.rb
|
217
195
|
- lib/sidekiq/client.rb
|
218
196
|
- lib/sidekiq/core_ext.rb
|
@@ -235,6 +213,7 @@ files:
|
|
235
213
|
- lib/sidekiq/rails.rb
|
236
214
|
- lib/sidekiq/redis_connection.rb
|
237
215
|
- lib/sidekiq/scheduled.rb
|
216
|
+
- lib/sidekiq/tasks/sidekiq.rake
|
238
217
|
- lib/sidekiq/testing.rb
|
239
218
|
- lib/sidekiq/testing/inline.rb
|
240
219
|
- lib/sidekiq/util.rb
|
@@ -247,6 +226,7 @@ files:
|
|
247
226
|
- test/config.yml
|
248
227
|
- test/env_based_config.yml
|
249
228
|
- test/fake_env.rb
|
229
|
+
- test/fixtures/en.yml
|
250
230
|
- test/helper.rb
|
251
231
|
- test/test_api.rb
|
252
232
|
- test/test_cli.rb
|
@@ -355,32 +335,32 @@ files:
|
|
355
335
|
homepage: http://sidekiq.org
|
356
336
|
licenses:
|
357
337
|
- LGPL-3.0
|
338
|
+
metadata: {}
|
358
339
|
post_install_message:
|
359
340
|
rdoc_options: []
|
360
341
|
require_paths:
|
361
342
|
- lib
|
362
343
|
required_ruby_version: !ruby/object:Gem::Requirement
|
363
|
-
none: false
|
364
344
|
requirements:
|
365
|
-
- -
|
345
|
+
- - '>='
|
366
346
|
- !ruby/object:Gem::Version
|
367
347
|
version: '0'
|
368
348
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
369
|
-
none: false
|
370
349
|
requirements:
|
371
|
-
- -
|
350
|
+
- - '>='
|
372
351
|
- !ruby/object:Gem::Version
|
373
352
|
version: '0'
|
374
353
|
requirements: []
|
375
354
|
rubyforge_project:
|
376
|
-
rubygems_version:
|
355
|
+
rubygems_version: 2.0.3
|
377
356
|
signing_key:
|
378
|
-
specification_version:
|
357
|
+
specification_version: 4
|
379
358
|
summary: Simple, efficient background processing for Ruby
|
380
359
|
test_files:
|
381
360
|
- test/config.yml
|
382
361
|
- test/env_based_config.yml
|
383
362
|
- test/fake_env.rb
|
363
|
+
- test/fixtures/en.yml
|
384
364
|
- test/helper.rb
|
385
365
|
- test/test_api.rb
|
386
366
|
- test/test_cli.rb
|