sidekiq 4.2.6 → 4.2.7
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 +4 -4
- data/Changes.md +9 -0
- data/Ent-Changes.md +6 -0
- data/Pro-Changes.md +5 -0
- data/Rakefile +5 -2
- data/lib/sidekiq.rb +1 -1
- data/lib/sidekiq/api.rb +1 -1
- data/lib/sidekiq/cli.rb +2 -2
- data/lib/sidekiq/core_ext.rb +13 -0
- data/lib/sidekiq/launcher.rb +31 -22
- data/lib/sidekiq/manager.rb +1 -1
- data/lib/sidekiq/rails.rb +9 -0
- data/lib/sidekiq/testing.rb +3 -1
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/helpers.rb +5 -4
- data/test/test_api.rb +6 -6
- data/test/test_extensions.rb +6 -4
- data/test/test_launcher.rb +10 -13
- data/test/test_retry.rb +1 -1
- data/test/test_sidekiq.rb +1 -1
- data/test/test_testing_fake.rb +2 -0
- data/test/test_web.rb +17 -64
- data/web/views/morgue.erb +10 -8
- data/web/views/retries.erb +10 -8
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a0c3d337d5c12118df6a841022364a29a0d0f32
|
4
|
+
data.tar.gz: b28df88c08bed2192a2a6a529928120887ca595a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f397a4ca48db4a830b4b7c41a95b2df0b594bf41ad0777f1c79acb821649ff7c87d9790810730aa353ba40e1af5d050f229e23bac1cc2055681d51b3bf11efe6
|
7
|
+
data.tar.gz: 5b83dea7315ee15bc8d0020873774f6896c41f1ec821292bedaf1e4595a30a966f7ebd91504a7933e57efbf900a5e1b0bc2fb2183f49333d77990535b37119ec
|
data/Changes.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Sidekiq Changes
|
2
2
|
|
3
|
+
4.2.7
|
4
|
+
-----------
|
5
|
+
|
6
|
+
- Add new integration testing to verify code loading and job execution
|
7
|
+
in development and production modes with Rails 4 and 5 [#3241]
|
8
|
+
- Fix delayed extensions in development mode [#3227, DarthSim]
|
9
|
+
- Use Worker's `retry` default if job payload does not have a retry
|
10
|
+
attribute [#3234, mlarraz]
|
11
|
+
|
3
12
|
4.2.6
|
4
13
|
-----------
|
5
14
|
|
data/Ent-Changes.md
CHANGED
@@ -3,6 +3,12 @@ Sidekiq Enterprise Changelog
|
|
3
3
|
|
4
4
|
Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
|
5
5
|
|
6
|
+
HEAD
|
7
|
+
-------------
|
8
|
+
|
9
|
+
- Add new web authorization API [#3251]
|
10
|
+
- Update all sidekiqswarm env vars to use SIDEKIQ\_ prefix [#3218]
|
11
|
+
|
6
12
|
1.4.0
|
7
13
|
-------------
|
8
14
|
|
data/Pro-Changes.md
CHANGED
data/Rakefile
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rake/testtask'
|
3
3
|
Rake::TestTask.new(:test) do |test|
|
4
|
-
|
5
|
-
#test.warning = true
|
4
|
+
test.warning = true
|
6
5
|
test.pattern = 'test/**/test_*.rb'
|
7
6
|
end
|
8
7
|
|
9
8
|
task :default => :test
|
9
|
+
|
10
|
+
task :appraise do
|
11
|
+
exec("cd myapp && rake appraise")
|
12
|
+
end
|
data/lib/sidekiq.rb
CHANGED
data/lib/sidekiq/api.rb
CHANGED
data/lib/sidekiq/cli.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
3
|
$stdout.sync = true
|
4
4
|
|
5
5
|
require 'yaml'
|
@@ -229,7 +229,7 @@ module Sidekiq
|
|
229
229
|
require 'sidekiq/rails'
|
230
230
|
require File.expand_path("#{options[:require]}/config/environment.rb")
|
231
231
|
::Rails.application.eager_load!
|
232
|
-
elsif ::Rails::VERSION::MAJOR
|
232
|
+
elsif ::Rails::VERSION::MAJOR == 4
|
233
233
|
# Painful contortions, see 1791 for discussion
|
234
234
|
# No autoloading, we want to force eager load for everything.
|
235
235
|
require File.expand_path("#{options[:require]}/config/application.rb")
|
data/lib/sidekiq/core_ext.rb
CHANGED
@@ -104,3 +104,16 @@ rescue LoadError
|
|
104
104
|
end
|
105
105
|
|
106
106
|
|
107
|
+
begin
|
108
|
+
require 'active_support/core_ext/kernel/reporting'
|
109
|
+
rescue LoadError
|
110
|
+
module Kernel
|
111
|
+
module_function
|
112
|
+
def silence_warnings
|
113
|
+
old_verbose, $VERBOSE = $VERBOSE, nil
|
114
|
+
yield
|
115
|
+
ensure
|
116
|
+
$VERBOSE = old_verbose
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
data/lib/sidekiq/launcher.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
3
|
require 'sidekiq/manager'
|
4
4
|
require 'sidekiq/fetch'
|
5
5
|
require 'sidekiq/scheduled'
|
@@ -63,15 +63,16 @@ module Sidekiq
|
|
63
63
|
|
64
64
|
JVM_RESERVED_SIGNALS = ['USR1', 'USR2'] # Don't Process#kill if we get these signals via the API
|
65
65
|
|
66
|
-
def heartbeat
|
67
|
-
results = Sidekiq::CLI::PROCTITLES.map {|x| x.(self,
|
66
|
+
def heartbeat
|
67
|
+
results = Sidekiq::CLI::PROCTITLES.map {|x| x.(self, to_data) }
|
68
68
|
results.compact!
|
69
69
|
$0 = results.join(' ')
|
70
70
|
|
71
|
-
❤
|
71
|
+
❤
|
72
72
|
end
|
73
73
|
|
74
|
-
def ❤
|
74
|
+
def ❤
|
75
|
+
key = identity
|
75
76
|
fails = procd = 0
|
76
77
|
begin
|
77
78
|
Processor::FAILURE.update {|curr| fails = curr; 0 }
|
@@ -98,7 +99,7 @@ module Sidekiq
|
|
98
99
|
conn.multi do
|
99
100
|
conn.sadd('processes', key)
|
100
101
|
conn.exists(key)
|
101
|
-
conn.hmset(key, 'info',
|
102
|
+
conn.hmset(key, 'info', to_json, 'busy', Processor::WORKER_STATE.size, 'beat', Time.now.to_f, 'quiet', @done)
|
102
103
|
conn.expire(key, 60)
|
103
104
|
conn.rpop("#{key}-signals")
|
104
105
|
end
|
@@ -124,28 +125,36 @@ module Sidekiq
|
|
124
125
|
end
|
125
126
|
|
126
127
|
def start_heartbeat
|
127
|
-
k = identity
|
128
|
-
data = {
|
129
|
-
'hostname' => hostname,
|
130
|
-
'started_at' => Time.now.to_f,
|
131
|
-
'pid' => $$,
|
132
|
-
'tag' => @options[:tag] || '',
|
133
|
-
'concurrency' => @options[:concurrency],
|
134
|
-
'queues' => @options[:queues].uniq,
|
135
|
-
'labels' => @options[:labels],
|
136
|
-
'identity' => k,
|
137
|
-
}
|
138
|
-
# this data doesn't change so dump it to a string
|
139
|
-
# now so we don't need to dump it every heartbeat.
|
140
|
-
json = Sidekiq.dump_json(data)
|
141
|
-
|
142
128
|
while true
|
143
|
-
heartbeat
|
129
|
+
heartbeat
|
144
130
|
sleep 5
|
145
131
|
end
|
146
132
|
Sidekiq.logger.info("Heartbeat stopping...")
|
147
133
|
end
|
148
134
|
|
135
|
+
def to_data
|
136
|
+
@data ||= begin
|
137
|
+
{
|
138
|
+
'hostname' => hostname,
|
139
|
+
'started_at' => Time.now.to_f,
|
140
|
+
'pid' => $$,
|
141
|
+
'tag' => @options[:tag] || '',
|
142
|
+
'concurrency' => @options[:concurrency],
|
143
|
+
'queues' => @options[:queues].uniq,
|
144
|
+
'labels' => @options[:labels],
|
145
|
+
'identity' => identity,
|
146
|
+
}
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def to_json
|
151
|
+
@json ||= begin
|
152
|
+
# this data changes infrequently so dump it to a string
|
153
|
+
# now so we don't need to dump it every heartbeat.
|
154
|
+
Sidekiq.dump_json(to_data)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
149
158
|
def clear_heartbeat
|
150
159
|
# Remove record from Redis since we are shutting down.
|
151
160
|
# Note we don't stop the heartbeat thread; if the process
|
data/lib/sidekiq/manager.rb
CHANGED
data/lib/sidekiq/rails.rb
CHANGED
@@ -71,6 +71,7 @@ module Sidekiq
|
|
71
71
|
else
|
72
72
|
Sidekiq.logger.debug { "Enabling Rails 5+ live code reloading, so hot!" }
|
73
73
|
Sidekiq.options[:reloader] = Sidekiq::Rails::Reloader.new
|
74
|
+
Psych::Visitors::ToRuby.prepend(Sidekiq::Rails::PsychAutoload)
|
74
75
|
end
|
75
76
|
end
|
76
77
|
end
|
@@ -106,5 +107,13 @@ module Sidekiq
|
|
106
107
|
"#<Sidekiq::Rails::Reloader @app=#{@app.class.name}>"
|
107
108
|
end
|
108
109
|
end
|
110
|
+
|
111
|
+
module PsychAutoload
|
112
|
+
def resolve_class(klass_name)
|
113
|
+
klass_name && klass_name.constantize
|
114
|
+
rescue NameError
|
115
|
+
super
|
116
|
+
end
|
117
|
+
end
|
109
118
|
end if defined?(::Rails)
|
110
119
|
end
|
data/lib/sidekiq/testing.rb
CHANGED
@@ -69,7 +69,9 @@ module Sidekiq
|
|
69
69
|
def raw_push(payloads)
|
70
70
|
if Sidekiq::Testing.fake?
|
71
71
|
payloads.each do |job|
|
72
|
-
|
72
|
+
job = Sidekiq.load_json(Sidekiq.dump_json(job))
|
73
|
+
job.merge!('enqueued_at' => Time.now.to_f) unless job['at']
|
74
|
+
Queues.push(job['queue'], job['class'], job)
|
73
75
|
end
|
74
76
|
true
|
75
77
|
elsif Sidekiq::Testing.inline?
|
data/lib/sidekiq/version.rb
CHANGED
data/lib/sidekiq/web/helpers.rb
CHANGED
@@ -81,6 +81,11 @@ module Sidekiq
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
# mperham/sidekiq#3243
|
85
|
+
def unfiltered?
|
86
|
+
yield unless env['PATH_INFO'].start_with?("/filter/")
|
87
|
+
end
|
88
|
+
|
84
89
|
def get_locale
|
85
90
|
strings(locale)
|
86
91
|
end
|
@@ -112,10 +117,6 @@ module Sidekiq
|
|
112
117
|
end.map { |msg| Sidekiq.load_json(msg) }
|
113
118
|
end
|
114
119
|
|
115
|
-
def location
|
116
|
-
Sidekiq.redis { |conn| conn.client.location }
|
117
|
-
end
|
118
|
-
|
119
120
|
def redis_connection
|
120
121
|
Sidekiq.redis { |conn| conn.client.id }
|
121
122
|
end
|
data/test/test_api.rb
CHANGED
@@ -174,15 +174,15 @@ class TestApi < Sidekiq::Test
|
|
174
174
|
before do
|
175
175
|
ActiveJob::Base.queue_adapter = :sidekiq
|
176
176
|
ActiveJob::Base.logger = nil
|
177
|
+
end
|
177
178
|
|
178
|
-
|
179
|
-
|
180
|
-
end
|
179
|
+
class ApiMailer < ActionMailer::Base
|
180
|
+
def test_email(*)
|
181
181
|
end
|
182
|
+
end
|
182
183
|
|
183
|
-
|
184
|
-
|
185
|
-
end
|
184
|
+
class ApiJob < ActiveJob::Base
|
185
|
+
def perform(*)
|
186
186
|
end
|
187
187
|
end
|
188
188
|
|
data/test/test_extensions.rb
CHANGED
@@ -117,10 +117,12 @@ class TestExtensions < Sidekiq::Test
|
|
117
117
|
|
118
118
|
Sidekiq.instance_eval { remove_instance_variable :@delay_removed }
|
119
119
|
# Reload modified modules
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
120
|
+
silence_warnings do
|
121
|
+
load 'sidekiq/extensions/action_mailer.rb'
|
122
|
+
load 'sidekiq/extensions/active_record.rb'
|
123
|
+
load 'sidekiq/extensions/generic_proxy.rb'
|
124
|
+
load 'sidekiq/extensions/class_methods.rb'
|
125
|
+
end
|
124
126
|
end
|
125
127
|
end
|
126
128
|
|
data/test/test_launcher.rb
CHANGED
@@ -18,6 +18,7 @@ class TestLauncher < Sidekiq::Test
|
|
18
18
|
@mgr = new_manager(options)
|
19
19
|
@launcher = Sidekiq::Launcher.new(options)
|
20
20
|
@launcher.manager = @mgr
|
21
|
+
@id = @launcher.identity
|
21
22
|
|
22
23
|
Sidekiq::Processor::WORKER_STATE['a'] = {'b' => 1}
|
23
24
|
|
@@ -35,16 +36,16 @@ class TestLauncher < Sidekiq::Test
|
|
35
36
|
i += 1
|
36
37
|
end
|
37
38
|
assert_equal 0, i
|
38
|
-
@launcher.heartbeat
|
39
|
+
@launcher.heartbeat
|
39
40
|
assert_equal 1, i
|
40
|
-
@launcher.heartbeat
|
41
|
+
@launcher.heartbeat
|
41
42
|
assert_equal 1, i
|
42
43
|
end
|
43
44
|
|
44
45
|
describe 'when manager is active' do
|
45
46
|
before do
|
46
47
|
Sidekiq::CLI::PROCTITLES << proc { "xyz" }
|
47
|
-
@launcher.heartbeat
|
48
|
+
@launcher.heartbeat
|
48
49
|
Sidekiq::CLI::PROCTITLES.pop
|
49
50
|
end
|
50
51
|
|
@@ -53,9 +54,9 @@ class TestLauncher < Sidekiq::Test
|
|
53
54
|
end
|
54
55
|
|
55
56
|
it 'stores process info in redis' do
|
56
|
-
info = Sidekiq.redis { |c| c.hmget(
|
57
|
+
info = Sidekiq.redis { |c| c.hmget(@id, 'busy') }
|
57
58
|
assert_equal ["1"], info
|
58
|
-
expires = Sidekiq.redis { |c| c.pttl(
|
59
|
+
expires = Sidekiq.redis { |c| c.pttl(@id) }
|
59
60
|
assert_in_delta 60000, expires, 500
|
60
61
|
end
|
61
62
|
end
|
@@ -63,7 +64,7 @@ class TestLauncher < Sidekiq::Test
|
|
63
64
|
describe 'when manager is stopped' do
|
64
65
|
before do
|
65
66
|
@launcher.quiet
|
66
|
-
@launcher.heartbeat
|
67
|
+
@launcher.heartbeat
|
67
68
|
end
|
68
69
|
|
69
70
|
#after do
|
@@ -75,21 +76,17 @@ class TestLauncher < Sidekiq::Test
|
|
75
76
|
end
|
76
77
|
|
77
78
|
it 'stores process info in redis' do
|
78
|
-
info = Sidekiq.redis { |c| c.hmget(
|
79
|
+
info = Sidekiq.redis { |c| c.hmget(@id, 'busy') }
|
79
80
|
assert_equal ["1"], info
|
80
|
-
expires = Sidekiq.redis { |c| c.pttl(
|
81
|
+
expires = Sidekiq.redis { |c| c.pttl(@id) }
|
81
82
|
assert_in_delta 60000, expires, 50
|
82
83
|
end
|
83
84
|
end
|
84
85
|
end
|
85
86
|
|
86
87
|
def options
|
87
|
-
{ :concurrency => 3, :queues => ['default'] }
|
88
|
+
{ :concurrency => 3, :queues => ['default'], :tag => 'myapp' }
|
88
89
|
end
|
89
90
|
|
90
|
-
def heartbeat_data
|
91
|
-
{ 'concurrency' => 3, 'tag' => 'myapp' }
|
92
|
-
end
|
93
91
|
end
|
94
|
-
|
95
92
|
end
|
data/test/test_retry.rb
CHANGED
data/test/test_sidekiq.rb
CHANGED
data/test/test_testing_fake.rb
CHANGED
@@ -61,8 +61,10 @@ class TestTesting < Sidekiq::Test
|
|
61
61
|
it 'stubs the async call' do
|
62
62
|
assert_equal 0, DirectWorker.jobs.size
|
63
63
|
assert DirectWorker.perform_async(1, 2)
|
64
|
+
assert_in_delta Time.now.to_f, DirectWorker.jobs.last['enqueued_at'], 0.01
|
64
65
|
assert_equal 1, DirectWorker.jobs.size
|
65
66
|
assert DirectWorker.perform_in(10, 1, 2)
|
67
|
+
refute DirectWorker.jobs.last['enqueued_at']
|
66
68
|
assert_equal 2, DirectWorker.jobs.size
|
67
69
|
assert DirectWorker.perform_at(10, 1, 2)
|
68
70
|
assert_equal 3, DirectWorker.jobs.size
|
data/test/test_web.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
3
|
require_relative 'helper'
|
4
4
|
require 'sidekiq/web'
|
5
5
|
require 'rack/test'
|
@@ -414,73 +414,26 @@ class TestWeb < Sidekiq::Test
|
|
414
414
|
2.times { add_retry }
|
415
415
|
3.times { add_scheduled }
|
416
416
|
4.times { add_worker }
|
417
|
+
end
|
417
418
|
|
419
|
+
it 'works' do
|
418
420
|
get '/stats'
|
419
421
|
@response = Sidekiq.load_json(last_response.body)
|
420
|
-
end
|
421
|
-
|
422
|
-
it 'can refresh dashboard stats' do
|
423
422
|
assert_equal 200, last_response.status
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
it 'reports busy' do
|
440
|
-
assert_equal 4, @response["sidekiq"]["busy"]
|
441
|
-
end
|
442
|
-
|
443
|
-
it 'reports processes' do
|
444
|
-
assert_equal 1, @response["sidekiq"]["processes"]
|
445
|
-
end
|
446
|
-
|
447
|
-
it 'reports retries' do
|
448
|
-
assert_equal 2, @response["sidekiq"]["retries"]
|
449
|
-
end
|
450
|
-
|
451
|
-
it 'reports scheduled' do
|
452
|
-
assert_equal 3, @response["sidekiq"]["scheduled"]
|
453
|
-
end
|
454
|
-
|
455
|
-
it 'reports latency' do
|
456
|
-
assert_equal 0, @response["sidekiq"]["default_latency"]
|
457
|
-
end
|
458
|
-
end
|
459
|
-
|
460
|
-
describe "for redis" do
|
461
|
-
it 'are namespaced' do
|
462
|
-
assert_includes @response.keys, "redis"
|
463
|
-
end
|
464
|
-
|
465
|
-
it 'reports version' do
|
466
|
-
assert_includes @response["redis"].keys, "redis_version"
|
467
|
-
end
|
468
|
-
|
469
|
-
it 'reports uptime' do
|
470
|
-
assert_includes @response["redis"].keys, "uptime_in_days"
|
471
|
-
end
|
472
|
-
|
473
|
-
it 'reports connected clients' do
|
474
|
-
assert_includes @response["redis"].keys, "connected_clients"
|
475
|
-
end
|
476
|
-
|
477
|
-
it 'reports user memory' do
|
478
|
-
assert_includes @response["redis"].keys, "used_memory_human"
|
479
|
-
end
|
480
|
-
|
481
|
-
it 'reports memory peak' do
|
482
|
-
assert_includes @response["redis"].keys, "used_memory_peak_human"
|
483
|
-
end
|
423
|
+
assert_includes @response.keys, "sidekiq"
|
424
|
+
assert_equal 5, @response["sidekiq"]["processed"]
|
425
|
+
assert_equal 2, @response["sidekiq"]["failed"]
|
426
|
+
assert_equal 4, @response["sidekiq"]["busy"]
|
427
|
+
assert_equal 1, @response["sidekiq"]["processes"]
|
428
|
+
assert_equal 2, @response["sidekiq"]["retries"]
|
429
|
+
assert_equal 3, @response["sidekiq"]["scheduled"]
|
430
|
+
assert_equal 0, @response["sidekiq"]["default_latency"]
|
431
|
+
assert_includes @response.keys, "redis"
|
432
|
+
assert_includes @response["redis"].keys, "redis_version"
|
433
|
+
assert_includes @response["redis"].keys, "uptime_in_days"
|
434
|
+
assert_includes @response["redis"].keys, "connected_clients"
|
435
|
+
assert_includes @response["redis"].keys, "used_memory_human"
|
436
|
+
assert_includes @response["redis"].keys, "used_memory_peak_human"
|
484
437
|
end
|
485
438
|
end
|
486
439
|
|
data/web/views/morgue.erb
CHANGED
@@ -57,14 +57,16 @@
|
|
57
57
|
<input class="btn btn-danger btn-xs pull-left" type="submit" name="delete" value="<%= t('Delete') %>" />
|
58
58
|
</form>
|
59
59
|
|
60
|
-
|
61
|
-
<%=
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
<%=
|
66
|
-
|
67
|
-
|
60
|
+
<% unfiltered? do %>
|
61
|
+
<form action="<%= root_path %>morgue/all/delete" method="post">
|
62
|
+
<%= csrf_tag %>
|
63
|
+
<input class="btn btn-danger btn-xs pull-right" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
64
|
+
</form>
|
65
|
+
<form action="<%= root_path %>morgue/all/retry" method="post">
|
66
|
+
<%= csrf_tag %>
|
67
|
+
<input class="btn btn-danger btn-xs pull-right" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
68
|
+
</form>
|
69
|
+
<% end %>
|
68
70
|
|
69
71
|
<% else %>
|
70
72
|
<div class="alert alert-success"><%= t('NoDeadJobsFound') %></div>
|
data/web/views/retries.erb
CHANGED
@@ -60,14 +60,16 @@
|
|
60
60
|
<input class="btn btn-danger btn-xs pull-left" type="submit" name="kill" value="<%= t('Kill') %>" />
|
61
61
|
</form>
|
62
62
|
|
63
|
-
|
64
|
-
<%=
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
<%=
|
69
|
-
|
70
|
-
|
63
|
+
<% unfiltered? do %>
|
64
|
+
<form action="<%= root_path %>retries/all/delete" method="post">
|
65
|
+
<%= csrf_tag %>
|
66
|
+
<input class="btn btn-danger btn-xs pull-right" type="submit" name="delete" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
67
|
+
</form>
|
68
|
+
<form action="<%= root_path %>retries/all/retry" method="post">
|
69
|
+
<%= csrf_tag %>
|
70
|
+
<input class="btn btn-danger btn-xs pull-right" type="submit" name="retry" value="<%= t('RetryAll') %>" data-confirm="<%= t('AreYouSure') %>" />
|
71
|
+
</form>
|
72
|
+
<% end %>
|
71
73
|
|
72
74
|
<% else %>
|
73
75
|
<div class="alert alert-success"><%= t('NoRetriesFound') %></div>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.2.
|
4
|
+
version: 4.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Perham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -311,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
311
311
|
version: '0'
|
312
312
|
requirements: []
|
313
313
|
rubyforge_project:
|
314
|
-
rubygems_version: 2.5.
|
314
|
+
rubygems_version: 2.5.2
|
315
315
|
signing_key:
|
316
316
|
specification_version: 4
|
317
317
|
summary: Simple, efficient background processing for Ruby
|
@@ -346,4 +346,3 @@ test_files:
|
|
346
346
|
- test/test_util.rb
|
347
347
|
- test/test_web.rb
|
348
348
|
- test/test_web_helpers.rb
|
349
|
-
has_rdoc:
|