resqued 0.8.5 → 0.10.2
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.
- checksums.yaml +5 -5
- data/CHANGES.md +23 -0
- data/exe/resqued +41 -22
- data/lib/resqued.rb +5 -5
- data/lib/resqued/config.rb +7 -7
- data/lib/resqued/config/after_fork.rb +1 -1
- data/lib/resqued/config/base.rb +1 -1
- data/lib/resqued/config/before_fork.rb +1 -1
- data/lib/resqued/config/worker.rb +13 -13
- data/lib/resqued/daemon.rb +1 -0
- data/lib/resqued/exec_on_hup.rb +43 -0
- data/lib/resqued/listener.rb +51 -49
- data/lib/resqued/listener_pool.rb +97 -0
- data/lib/resqued/listener_proxy.rb +40 -31
- data/lib/resqued/listener_state.rb +8 -0
- data/lib/resqued/logging.rb +15 -8
- data/lib/resqued/master.rb +94 -98
- data/lib/resqued/master_state.rb +73 -0
- data/lib/resqued/procline_version.rb +2 -2
- data/lib/resqued/sleepy.rb +6 -4
- data/lib/resqued/test_case.rb +3 -3
- data/lib/resqued/version.rb +1 -1
- data/lib/resqued/worker.rb +18 -13
- data/spec/fixtures/test_case_after_fork_raises.rb +5 -2
- data/spec/fixtures/test_case_before_fork_raises.rb +4 -1
- data/spec/fixtures/test_case_environment.rb +3 -1
- data/spec/integration/master_inherits_child_spec.rb +85 -0
- data/spec/integration/restart_spec.rb +63 -0
- data/spec/resqued/backoff_spec.rb +27 -27
- data/spec/resqued/config/fork_event_spec.rb +8 -8
- data/spec/resqued/config/worker_spec.rb +63 -50
- data/spec/resqued/config_spec.rb +6 -6
- data/spec/resqued/sleepy_spec.rb +10 -11
- data/spec/resqued/test_case_spec.rb +7 -7
- data/spec/spec_helper.rb +5 -1
- data/spec/support/custom_matchers.rb +10 -2
- data/spec/support/extra-child-shim +6 -0
- data/spec/support/resqued_path.rb +11 -0
- metadata +44 -27
- data/exe/resqued-listener +0 -6
@@ -1,12 +1,12 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require "spec_helper"
|
2
|
+
require "resqued/config/after_fork"
|
3
|
+
require "resqued/config/before_fork"
|
4
|
+
require "resqued/runtime_info"
|
5
5
|
|
6
6
|
describe do
|
7
7
|
before { evaluator.apply(config) }
|
8
8
|
|
9
|
-
context
|
9
|
+
context "after_fork" do
|
10
10
|
# Run the after_fork block.
|
11
11
|
#
|
12
12
|
# after_fork do |resque_worker|
|
@@ -26,13 +26,13 @@ describe do
|
|
26
26
|
end
|
27
27
|
END_CONFIG
|
28
28
|
|
29
|
-
let(:evaluator) { Resqued::Config::AfterFork.new(:
|
29
|
+
let(:evaluator) { Resqued::Config::AfterFork.new(worker: worker) }
|
30
30
|
let(:worker) { FakeResqueWorker.new }
|
31
31
|
|
32
32
|
it { expect(worker.token).to eq(:called) }
|
33
33
|
end
|
34
34
|
|
35
|
-
context
|
35
|
+
context "before_fork" do
|
36
36
|
# Run the before_fork block.
|
37
37
|
#
|
38
38
|
# before_fork do
|
@@ -56,7 +56,7 @@ describe do
|
|
56
56
|
end
|
57
57
|
END_CONFIG
|
58
58
|
|
59
|
-
let(:evaluator) { $before_fork_called = false
|
59
|
+
let(:evaluator) { $before_fork_called = false; Resqued::Config::BeforeFork.new(resqued: resqued) }
|
60
60
|
let(:resqued) { Resqued::RuntimeInfo.new }
|
61
61
|
|
62
62
|
it { expect($before_fork_called).to eq(true) }
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "spec_helper"
|
2
|
+
require "resqued/config/worker"
|
3
3
|
|
4
4
|
describe Resqued::Config::Worker do
|
5
5
|
# Create a bunch of Resqued::Worker objects from
|
@@ -15,7 +15,7 @@ describe Resqued::Config::Worker do
|
|
15
15
|
#
|
16
16
|
# ignore calls to any other top-level method.
|
17
17
|
|
18
|
-
let(:evaluator) { described_class.new(:
|
18
|
+
let(:evaluator) { described_class.new(worker_class: FakeWorker) }
|
19
19
|
let(:result) { evaluator.apply(config) }
|
20
20
|
module FakeWorker
|
21
21
|
def self.new(options)
|
@@ -23,7 +23,7 @@ describe Resqued::Config::Worker do
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
context
|
26
|
+
context "individual" do
|
27
27
|
let(:config) { <<-END_CONFIG }
|
28
28
|
before_fork { }
|
29
29
|
after_fork { }
|
@@ -35,25 +35,38 @@ describe Resqued::Config::Worker do
|
|
35
35
|
after_fork { } # So that we don't rely on `workers`'s result falling through.
|
36
36
|
END_CONFIG
|
37
37
|
it { expect(result.size).to eq(6) }
|
38
|
-
it { expect(result[0]).to eq(:
|
39
|
-
it { expect(result[1]).to eq(:
|
40
|
-
it { expect(result[2]).to eq(:
|
41
|
-
it { expect(result[3]).to eq(:
|
42
|
-
it { expect(result[4]).to eq(:
|
43
|
-
it { expect(result[5]).to eq(:
|
38
|
+
it { expect(result[0]).to eq(queues: ["a"]) }
|
39
|
+
it { expect(result[1]).to eq(queues: ["a"]) }
|
40
|
+
it { expect(result[2]).to eq(queues: ["b"]) }
|
41
|
+
it { expect(result[3]).to eq(queues: ["c", "d"]) }
|
42
|
+
it { expect(result[4]).to eq(queues: ["d", "c"], interval: 3) }
|
43
|
+
it { expect(result[5]).to eq(queues: ["*"]) }
|
44
44
|
end
|
45
45
|
|
46
|
-
context
|
46
|
+
context "concise pool" do
|
47
47
|
let(:config) { <<-END_CONFIG }
|
48
48
|
worker_pool 2, 'a', 'b', 'c', :interval => 1
|
49
49
|
END_CONFIG
|
50
|
-
it
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
it do
|
51
|
+
expect(result).to eq([
|
52
|
+
{ queues: ["a", "b", "c"], interval: 1 },
|
53
|
+
{ queues: ["a", "b", "c"], interval: 1 },
|
54
|
+
])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "small pool with percent" do
|
59
|
+
let(:config) { <<-END_CONFIG }
|
60
|
+
worker_pool 2
|
61
|
+
queue "a"
|
62
|
+
queue "b", :percent => 45
|
63
|
+
END_CONFIG
|
64
|
+
it { expect(result.size).to eq(2) }
|
65
|
+
it { expect(result[0]).to eq(queues: ["a", "b"]) }
|
66
|
+
it { expect(result[1]).to eq(queues: ["a"]) }
|
54
67
|
end
|
55
68
|
|
56
|
-
context
|
69
|
+
context "pool (hash for concurrency)" do
|
57
70
|
let(:config) { <<-END_CONFIG }
|
58
71
|
before_fork { }
|
59
72
|
after_fork { }
|
@@ -64,15 +77,15 @@ describe Resqued::Config::Worker do
|
|
64
77
|
after_fork { } # So that we don't rely on `worker_pool`'s result falling through.
|
65
78
|
END_CONFIG
|
66
79
|
it { expect(result.size).to eq(20) }
|
67
|
-
it { expect(result[0]).to eq(:
|
68
|
-
it { expect(result[3]).to eq(:
|
69
|
-
it { expect(result[4]).to eq(:
|
70
|
-
it { expect(result[9]).to eq(:
|
71
|
-
it { expect(result[10]).to eq(:
|
72
|
-
it { expect(result[19]).to eq(:
|
80
|
+
it { expect(result[0]).to eq(queues: ["a", "b1", "b2", "c"], interval: 1) }
|
81
|
+
it { expect(result[3]).to eq(queues: ["a", "b1", "b2", "c"], interval: 1) }
|
82
|
+
it { expect(result[4]).to eq(queues: ["b1", "b2", "c"], interval: 1) }
|
83
|
+
it { expect(result[9]).to eq(queues: ["b1", "b2", "c"], interval: 1) }
|
84
|
+
it { expect(result[10]).to eq(queues: ["c"], interval: 1) }
|
85
|
+
it { expect(result[19]).to eq(queues: ["c"], interval: 1) }
|
73
86
|
end
|
74
87
|
|
75
|
-
context
|
88
|
+
context "pool, with implied queue" do
|
76
89
|
let(:config) { <<-END_CONFIG }
|
77
90
|
before_fork { }
|
78
91
|
after_fork { }
|
@@ -80,11 +93,11 @@ describe Resqued::Config::Worker do
|
|
80
93
|
after_fork { } # So that we don't rely on `worker_pool`'s result falling through.
|
81
94
|
END_CONFIG
|
82
95
|
it { expect(result.size).to eq(20) }
|
83
|
-
it { expect(result[0]).to eq(:
|
84
|
-
it { expect(result[19]).to eq(:
|
96
|
+
it { expect(result[0]).to eq(queues: ["*"]) }
|
97
|
+
it { expect(result[19]).to eq(queues: ["*"]) }
|
85
98
|
end
|
86
99
|
|
87
|
-
context
|
100
|
+
context "pool, with fewer queues than workers" do
|
88
101
|
let(:config) { <<-END_CONFIG }
|
89
102
|
before_fork { }
|
90
103
|
after_fork { }
|
@@ -93,13 +106,13 @@ describe Resqued::Config::Worker do
|
|
93
106
|
after_fork { } # So that we don't rely on `worker_pool`'s result falling through.
|
94
107
|
END_CONFIG
|
95
108
|
it { expect(result.size).to eq(20) }
|
96
|
-
it { expect(result[0]).to eq(:
|
97
|
-
it { expect(result[9]).to eq(:
|
98
|
-
it { expect(result[10]).to eq(:
|
99
|
-
it { expect(result[19]).to eq(:
|
109
|
+
it { expect(result[0]).to eq(queues: ["a"]) }
|
110
|
+
it { expect(result[9]).to eq(queues: ["a"]) }
|
111
|
+
it { expect(result[10]).to eq(queues: ["*"]) }
|
112
|
+
it { expect(result[19]).to eq(queues: ["*"]) }
|
100
113
|
end
|
101
114
|
|
102
|
-
context
|
115
|
+
context "pool, with more queues than workers" do
|
103
116
|
let(:config) { <<-END_CONFIG }
|
104
117
|
before_fork { }
|
105
118
|
after_fork { }
|
@@ -110,48 +123,48 @@ describe Resqued::Config::Worker do
|
|
110
123
|
it { expect(result.size).to eq(20) }
|
111
124
|
end
|
112
125
|
|
113
|
-
context
|
126
|
+
context "pool, with shuffled queues" do
|
114
127
|
let(:config) { <<-END_CONFIG }
|
115
128
|
worker_pool 20, :shuffle_queues => true
|
116
129
|
queue 'a', :count => 10
|
117
130
|
queue 'b', :count => 15
|
118
131
|
END_CONFIG
|
119
132
|
it { expect(result.size).to eq(20) }
|
120
|
-
it { (0..9).each { |i| expect(result[i][:queues].sort).to eq([
|
121
|
-
it { (10..14).each { |i| expect(result[i][:queues]).to eq([
|
122
|
-
it { (15..19).each { |i| expect(result[i][:queues]).to eq([
|
133
|
+
it { (0..9).each { |i| expect(result[i][:queues].sort).to eq(["a", "b"]) } }
|
134
|
+
it { (10..14).each { |i| expect(result[i][:queues]).to eq(["b"]) } }
|
135
|
+
it { (15..19).each { |i| expect(result[i][:queues]).to eq(["*"]) } }
|
123
136
|
it { result.each { |x| expect(x).not_to have_key(:shuffle_queues) } }
|
124
137
|
it do
|
125
138
|
shuffled_queues = result.take(10).map { |x| x[:queues] }
|
126
|
-
expect(shuffled_queues.sort.uniq).to eq([
|
139
|
+
expect(shuffled_queues.sort.uniq).to eq([["a", "b"], ["b", "a"]]) # Some of the queues should be shuffled
|
127
140
|
end
|
128
141
|
end
|
129
142
|
|
130
|
-
context
|
143
|
+
context "multiple worker configs" do
|
131
144
|
let(:config) { <<-END_CONFIG }
|
132
145
|
worker 'one'
|
133
146
|
worker 'two'
|
134
147
|
worker_pool 2
|
135
148
|
END_CONFIG
|
136
149
|
it { expect(result.size).to eq(4) }
|
137
|
-
it { expect(result[0]).to eq(:
|
138
|
-
it { expect(result[1]).to eq(:
|
139
|
-
it { expect(result[2]).to eq(:
|
140
|
-
it { expect(result[3]).to eq(:
|
150
|
+
it { expect(result[0]).to eq(queues: ["one"]) }
|
151
|
+
it { expect(result[1]).to eq(queues: ["two"]) }
|
152
|
+
it { expect(result[2]).to eq(queues: ["*"]) }
|
153
|
+
it { expect(result[3]).to eq(queues: ["*"]) }
|
141
154
|
end
|
142
155
|
|
143
|
-
context
|
156
|
+
context "worker factory" do
|
144
157
|
let(:config) { <<-END_CONFIG }
|
145
158
|
worker_factory { |queues| queues }
|
146
159
|
worker 'a'
|
147
160
|
END_CONFIG
|
148
161
|
|
149
162
|
it { expect(result.size).to eq(1) }
|
150
|
-
it { expect(result[0].reject { |k, _| k == :worker_factory}).to eq(:
|
151
|
-
it { expect(result[0][:worker_factory].call(result[0][:queues])).to eq([
|
163
|
+
it { expect(result[0].reject { |k, _| k == :worker_factory }).to eq(queues: ["a"]) }
|
164
|
+
it { expect(result[0][:worker_factory].call(result[0][:queues])).to eq(["a"]) }
|
152
165
|
end
|
153
166
|
|
154
|
-
context
|
167
|
+
context "worker factory with pool" do
|
155
168
|
let(:config) { <<-END_CONFIG }
|
156
169
|
worker_factory { |queues| queues }
|
157
170
|
worker_pool 1
|
@@ -159,15 +172,15 @@ describe Resqued::Config::Worker do
|
|
159
172
|
END_CONFIG
|
160
173
|
|
161
174
|
it { expect(result.size).to eq(1) }
|
162
|
-
it { expect(result[0].reject { |k, _| k == :worker_factory}).to eq(:
|
163
|
-
it { expect(result[0][:worker_factory].call(result[0][:queues])).to eq([
|
175
|
+
it { expect(result[0].reject { |k, _| k == :worker_factory }).to eq(queues: ["a"]) }
|
176
|
+
it { expect(result[0][:worker_factory].call(result[0][:queues])).to eq(["a"]) }
|
164
177
|
end
|
165
178
|
|
166
|
-
context
|
167
|
-
let(:evaluator) { described_class.new(:
|
179
|
+
context "with default options" do
|
180
|
+
let(:evaluator) { described_class.new(worker_class: FakeWorker, config: "something") }
|
168
181
|
let(:config) { <<-END_CONFIG }
|
169
182
|
worker 'a', :interval => 1
|
170
183
|
END_CONFIG
|
171
|
-
it { expect(result[0]).to eq(:
|
184
|
+
it { expect(result[0]).to eq(queues: ["a"], interval: 1, config: "something") }
|
172
185
|
end
|
173
186
|
end
|
data/spec/resqued/config_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "fileutils"
|
4
|
+
require "tmpdir"
|
5
5
|
|
6
|
-
require
|
6
|
+
require "resqued/config"
|
7
7
|
|
8
8
|
describe Resqued::Config do
|
9
9
|
context do
|
@@ -19,8 +19,8 @@ describe Resqued::Config do
|
|
19
19
|
end
|
20
20
|
let(:config) { Resqued::Config.new([@config_file]) }
|
21
21
|
|
22
|
-
it("can require_relative") { config.build_workers
|
23
|
-
it("does not override require_relative in required files") { config.build_workers
|
22
|
+
it("can require_relative") { config.build_workers; expect($test_val).to eq(:ok) }
|
23
|
+
it("does not override require_relative in required files") { config.build_workers; expect($other_test_val).to eq(:ok) }
|
24
24
|
|
25
25
|
def make_file(dir, relative_path, content)
|
26
26
|
File.join(dir, relative_path).tap do |path|
|
data/spec/resqued/sleepy_spec.rb
CHANGED
@@ -1,34 +1,33 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require 'thread'
|
1
|
+
require "spec_helper"
|
2
|
+
require "resqued/sleepy"
|
4
3
|
|
5
4
|
describe Resqued::Sleepy do
|
6
5
|
include Resqued::Sleepy
|
7
6
|
|
8
|
-
it
|
7
|
+
it "sleeps" do
|
9
8
|
expect { yawn(0.2) }.to run_for(0.2)
|
10
9
|
end
|
11
10
|
|
12
|
-
it
|
13
|
-
Thread.new { sleep 0.1
|
11
|
+
it "wakes on `awake`" do
|
12
|
+
Thread.new { sleep 0.1; awake }
|
14
13
|
expect { yawn(2.0) }.to run_for(0.1)
|
15
14
|
end
|
16
15
|
|
17
|
-
it
|
16
|
+
it "wakes on IO" do
|
18
17
|
rd, wr = IO.pipe
|
19
|
-
Thread.new { sleep 0.1
|
18
|
+
Thread.new { sleep 0.1; wr.write(".") }
|
20
19
|
expect { yawn(2.0, rd) }.to run_for(0.1)
|
21
20
|
end
|
22
21
|
|
23
|
-
it
|
22
|
+
it "does not sleep if duration is 0" do
|
24
23
|
expect { yawn(-0.000001) }.to run_for(0.0)
|
25
24
|
end
|
26
25
|
|
27
|
-
it
|
26
|
+
it "does not sleep if duration is negative" do
|
28
27
|
expect { yawn(0) }.to run_for(0.0)
|
29
28
|
end
|
30
29
|
|
31
|
-
it
|
30
|
+
it "sleeps if io is nil" do
|
32
31
|
expect { yawn(0.5, nil) }.to run_for(0.5)
|
33
32
|
end
|
34
33
|
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "spec_helper"
|
2
|
+
require "resqued/test_case"
|
3
3
|
|
4
4
|
describe Resqued::TestCase do
|
5
5
|
let(:test_case) { Object.new.extend(the_module) }
|
6
6
|
|
7
|
-
context
|
7
|
+
context "LoadConfig" do
|
8
8
|
let(:the_module) { described_class::LoadConfig }
|
9
|
-
it { expect { test_case.assert_resqued
|
10
|
-
it { expect { test_case.assert_resqued
|
11
|
-
it { expect { test_case.assert_resqued
|
12
|
-
it { expect { test_case.assert_resqued
|
9
|
+
it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_clean.rb" }.not_to raise_error }
|
10
|
+
it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_before_fork_raises.rb" }.to raise_error(RuntimeError) }
|
11
|
+
it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_after_fork_raises.rb" }.to raise_error(RuntimeError) }
|
12
|
+
it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_no_workers.rb" }.not_to raise_error }
|
13
13
|
end
|
14
14
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,7 +8,11 @@ module CustomMatchers
|
|
8
8
|
class RunFor
|
9
9
|
def initialize(expected_duration)
|
10
10
|
@expected_duration = expected_duration
|
11
|
-
@epsilon
|
11
|
+
@epsilon = 0.01
|
12
|
+
end
|
13
|
+
|
14
|
+
def supports_block_expectations?
|
15
|
+
true
|
12
16
|
end
|
13
17
|
|
14
18
|
def within(epsilon)
|
@@ -24,9 +28,13 @@ module CustomMatchers
|
|
24
28
|
@epsilon >= diff
|
25
29
|
end
|
26
30
|
|
27
|
-
def
|
31
|
+
def failure_message
|
28
32
|
"Expected block to run for #{@expected_duration} +/-#{@epsilon} seconds, but it ran for #{@actual_duration} seconds."
|
29
33
|
end
|
34
|
+
|
35
|
+
def failure_message_when_negated
|
36
|
+
"Expected block not to run for #{@expected_duration} +/-#{@epsilon} seconds, but it ran for #{@actual_duration} seconds."
|
37
|
+
end
|
30
38
|
end
|
31
39
|
end
|
32
40
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module ResquedPath
|
2
|
+
def resqued_path
|
3
|
+
return @resqued_path if @resqued_path
|
4
|
+
|
5
|
+
@resqued_path = File.expand_path("../../gemfiles/bin/resqued", File.dirname(__FILE__))
|
6
|
+
unless File.executable?(@resqued_path)
|
7
|
+
@resqued_path = File.expand_path("../../bin/resqued", File.dirname(__FILE__))
|
8
|
+
end
|
9
|
+
@resqued_path
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resqued
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Burke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kgio
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mono_logger
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: resque
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,58 +53,51 @@ dependencies:
|
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: 1.9.1
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- -
|
59
|
+
- - '='
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
61
|
+
version: 13.0.1
|
62
|
+
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - '='
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
68
|
+
version: 13.0.1
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '2.0'
|
62
|
-
- - "<"
|
73
|
+
- - '='
|
63
74
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
75
|
+
version: 3.9.0
|
65
76
|
type: :development
|
66
77
|
prerelease: false
|
67
78
|
version_requirements: !ruby/object:Gem::Requirement
|
68
79
|
requirements:
|
69
|
-
- -
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
version: '2.0'
|
72
|
-
- - "<"
|
80
|
+
- - '='
|
73
81
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
82
|
+
version: 3.9.0
|
75
83
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
84
|
+
name: rubocop
|
77
85
|
requirement: !ruby/object:Gem::Requirement
|
78
86
|
requirements:
|
79
|
-
- -
|
87
|
+
- - '='
|
80
88
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.
|
89
|
+
version: 0.78.0
|
82
90
|
type: :development
|
83
91
|
prerelease: false
|
84
92
|
version_requirements: !ruby/object:Gem::Requirement
|
85
93
|
requirements:
|
86
|
-
- -
|
94
|
+
- - '='
|
87
95
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.
|
96
|
+
version: 0.78.0
|
89
97
|
description: Daemon of resque workers
|
90
98
|
email: spraints@gmail.com
|
91
99
|
executables:
|
92
100
|
- resqued
|
93
|
-
- resqued-listener
|
94
101
|
extensions: []
|
95
102
|
extra_rdoc_files: []
|
96
103
|
files:
|
@@ -101,7 +108,6 @@ files:
|
|
101
108
|
- docs/processes.md
|
102
109
|
- docs/signals.md
|
103
110
|
- exe/resqued
|
104
|
-
- exe/resqued-listener
|
105
111
|
- lib/resqued.rb
|
106
112
|
- lib/resqued/backoff.rb
|
107
113
|
- lib/resqued/config.rb
|
@@ -111,10 +117,14 @@ files:
|
|
111
117
|
- lib/resqued/config/dsl.rb
|
112
118
|
- lib/resqued/config/worker.rb
|
113
119
|
- lib/resqued/daemon.rb
|
120
|
+
- lib/resqued/exec_on_hup.rb
|
114
121
|
- lib/resqued/listener.rb
|
122
|
+
- lib/resqued/listener_pool.rb
|
115
123
|
- lib/resqued/listener_proxy.rb
|
124
|
+
- lib/resqued/listener_state.rb
|
116
125
|
- lib/resqued/logging.rb
|
117
126
|
- lib/resqued/master.rb
|
127
|
+
- lib/resqued/master_state.rb
|
118
128
|
- lib/resqued/pidfile.rb
|
119
129
|
- lib/resqued/procline_version.rb
|
120
130
|
- lib/resqued/runtime_info.rb
|
@@ -127,6 +137,8 @@ files:
|
|
127
137
|
- spec/fixtures/test_case_clean.rb
|
128
138
|
- spec/fixtures/test_case_environment.rb
|
129
139
|
- spec/fixtures/test_case_no_workers.rb
|
140
|
+
- spec/integration/master_inherits_child_spec.rb
|
141
|
+
- spec/integration/restart_spec.rb
|
130
142
|
- spec/resqued/backoff_spec.rb
|
131
143
|
- spec/resqued/config/fork_event_spec.rb
|
132
144
|
- spec/resqued/config/worker_spec.rb
|
@@ -136,6 +148,8 @@ files:
|
|
136
148
|
- spec/resqued/test_case_spec.rb
|
137
149
|
- spec/spec_helper.rb
|
138
150
|
- spec/support/custom_matchers.rb
|
151
|
+
- spec/support/extra-child-shim
|
152
|
+
- spec/support/resqued_path.rb
|
139
153
|
homepage: https://github.com/spraints/resqued
|
140
154
|
licenses:
|
141
155
|
- MIT
|
@@ -155,14 +169,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
169
|
- !ruby/object:Gem::Version
|
156
170
|
version: '0'
|
157
171
|
requirements: []
|
158
|
-
|
159
|
-
rubygems_version: 2.5.2.3
|
172
|
+
rubygems_version: 3.0.3
|
160
173
|
signing_key:
|
161
174
|
specification_version: 4
|
162
175
|
summary: Daemon of resque workers
|
163
176
|
test_files:
|
164
177
|
- spec/spec_helper.rb
|
178
|
+
- spec/integration/restart_spec.rb
|
179
|
+
- spec/integration/master_inherits_child_spec.rb
|
165
180
|
- spec/support/custom_matchers.rb
|
181
|
+
- spec/support/resqued_path.rb
|
182
|
+
- spec/support/extra-child-shim
|
166
183
|
- spec/fixtures/test_case_clean.rb
|
167
184
|
- spec/fixtures/test_case_before_fork_raises.rb
|
168
185
|
- spec/fixtures/test_case_environment.rb
|