resqued 0.8.4 → 0.8.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.
- checksums.yaml +4 -4
- data/CHANGES.md +4 -0
- data/lib/resqued/config/dsl.rb +4 -0
- data/lib/resqued/config/worker.rb +8 -0
- data/lib/resqued/version.rb +1 -1
- data/lib/resqued/worker.rb +9 -3
- data/spec/resqued/config/worker_spec.rb +23 -0
- metadata +12 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ea3c0cf8313a982fc5c760f5ae8f7d6b7ed011d1
|
|
4
|
+
data.tar.gz: d9f06f7f2149de4cf608dc696a4e4bcf5cc77719
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 63277a13dd24c301ab7d389600bccd710cf67b4357ebeb33c14e673fdb076e265171a1a938a747f8a7d79007c8eb5e2376092af17f504c9c78ea3a3bca08e2d6
|
|
7
|
+
data.tar.gz: 7a41b8ef12b7962434887cc2498e4c69d2699bf186c160237fb829bf901efb4b969962c2a79455ce4cfb21deff71d923247e9fb0163bde07ac426e56f98e9617
|
data/CHANGES.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
Starting with version 0.6.1, resqued uses semantic versioning to indicate incompatibilities between the master process, listener process, and configuration.
|
|
2
2
|
|
|
3
|
+
v0.8.5
|
|
4
|
+
------
|
|
5
|
+
* Accept a custom proc to create the worker object.
|
|
6
|
+
|
|
3
7
|
v0.8.4
|
|
4
8
|
------
|
|
5
9
|
* Use `Integer` in place of `Fixnum`, when it's available.
|
data/lib/resqued/config/dsl.rb
CHANGED
|
@@ -20,6 +20,10 @@ module Resqued
|
|
|
20
20
|
def worker_pool(count, *queues_and_options)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
# Public: Define a factory Proc that creates Resque::Workers
|
|
24
|
+
def worker_factory(&block)
|
|
25
|
+
end
|
|
26
|
+
|
|
23
27
|
# Public: Define the queues worked by members of the worker pool.
|
|
24
28
|
def queue(*queues)
|
|
25
29
|
end
|
|
@@ -36,6 +36,14 @@ module Resqued
|
|
|
36
36
|
queues.each { |q| queue q }
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
# DSL: Define a factory Proc used to create Resque::Workers. The factory
|
|
40
|
+
# Proc receives a list of queues as an argument.
|
|
41
|
+
#
|
|
42
|
+
# worker_factory { |queues| Resque::Worker.new(*queues) }
|
|
43
|
+
def worker_factory(&block)
|
|
44
|
+
@worker_options.merge!(worker_factory: block)
|
|
45
|
+
end
|
|
46
|
+
|
|
39
47
|
# DSL: Define a queue for the worker_pool to work from.
|
|
40
48
|
#
|
|
41
49
|
# queue 'one'
|
data/lib/resqued/version.rb
CHANGED
data/lib/resqued/worker.rb
CHANGED
|
@@ -8,11 +8,19 @@ module Resqued
|
|
|
8
8
|
class Worker
|
|
9
9
|
include Resqued::Logging
|
|
10
10
|
|
|
11
|
+
DEFAULT_WORKER_FACTORY = ->(queues) {
|
|
12
|
+
resque_worker = Resque::Worker.new(*queues)
|
|
13
|
+
resque_worker.term_child = true if resque_worker.respond_to?('term_child=')
|
|
14
|
+
Resque.redis.client.reconnect
|
|
15
|
+
resque_worker
|
|
16
|
+
}
|
|
17
|
+
|
|
11
18
|
def initialize(options)
|
|
12
19
|
@queues = options.fetch(:queues)
|
|
13
20
|
@config = options.fetch(:config)
|
|
14
21
|
@interval = options[:interval]
|
|
15
22
|
@backoff = Backoff.new
|
|
23
|
+
@worker_factory = options.fetch(:worker_factory, DEFAULT_WORKER_FACTORY)
|
|
16
24
|
@pids = []
|
|
17
25
|
end
|
|
18
26
|
|
|
@@ -80,9 +88,7 @@ module Resqued
|
|
|
80
88
|
Resqued::Listener::ALL_SIGNALS.each { |signal| trap(signal, 'DEFAULT') }
|
|
81
89
|
trap(:QUIT) { exit! 0 } # If we get a QUIT during boot, just spin back down.
|
|
82
90
|
$0 = "STARTING RESQUE FOR #{queues.join(',')}"
|
|
83
|
-
resque_worker =
|
|
84
|
-
resque_worker.term_child = true if resque_worker.respond_to?('term_child=')
|
|
85
|
-
Resque.redis.client.reconnect
|
|
91
|
+
resque_worker = @worker_factory.call(queues)
|
|
86
92
|
@config.after_fork(resque_worker)
|
|
87
93
|
resque_worker.work(@interval || 5)
|
|
88
94
|
exit 0
|
|
@@ -140,6 +140,29 @@ describe Resqued::Config::Worker do
|
|
|
140
140
|
it { expect(result[3]).to eq(:queues => ['*']) }
|
|
141
141
|
end
|
|
142
142
|
|
|
143
|
+
context 'worker factory' do
|
|
144
|
+
let(:config) { <<-END_CONFIG }
|
|
145
|
+
worker_factory { |queues| queues }
|
|
146
|
+
worker 'a'
|
|
147
|
+
END_CONFIG
|
|
148
|
+
|
|
149
|
+
it { expect(result.size).to eq(1) }
|
|
150
|
+
it { expect(result[0].reject { |k, _| k == :worker_factory}).to eq(:queues => ['a']) }
|
|
151
|
+
it { expect(result[0][:worker_factory].call(result[0][:queues])).to eq(['a']) }
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
context 'worker factory with pool' do
|
|
155
|
+
let(:config) { <<-END_CONFIG }
|
|
156
|
+
worker_factory { |queues| queues }
|
|
157
|
+
worker_pool 1
|
|
158
|
+
queue 'a'
|
|
159
|
+
END_CONFIG
|
|
160
|
+
|
|
161
|
+
it { expect(result.size).to eq(1) }
|
|
162
|
+
it { expect(result[0].reject { |k, _| k == :worker_factory}).to eq(:queues => ['a']) }
|
|
163
|
+
it { expect(result[0][:worker_factory].call(result[0][:queues])).to eq(['a']) }
|
|
164
|
+
end
|
|
165
|
+
|
|
143
166
|
context 'with default options' do
|
|
144
167
|
let(:evaluator) { described_class.new(:worker_class => FakeWorker, :config => 'something') }
|
|
145
168
|
let(:config) { <<-END_CONFIG }
|
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.8.
|
|
4
|
+
version: 0.8.5
|
|
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: 2019-01-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: kgio
|
|
@@ -156,22 +156,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
156
156
|
version: '0'
|
|
157
157
|
requirements: []
|
|
158
158
|
rubyforge_project:
|
|
159
|
-
rubygems_version: 2.2.
|
|
159
|
+
rubygems_version: 2.5.2.3
|
|
160
160
|
signing_key:
|
|
161
161
|
specification_version: 4
|
|
162
162
|
summary: Daemon of resque workers
|
|
163
163
|
test_files:
|
|
164
|
-
- spec/resqued/sleepy_spec.rb
|
|
165
|
-
- spec/resqued/backoff_spec.rb
|
|
166
|
-
- spec/resqued/config/worker_spec.rb
|
|
167
|
-
- spec/resqued/config/fork_event_spec.rb
|
|
168
|
-
- spec/resqued/start_ctx_spec.rb
|
|
169
|
-
- spec/resqued/config_spec.rb
|
|
170
|
-
- spec/resqued/test_case_spec.rb
|
|
171
164
|
- spec/spec_helper.rb
|
|
165
|
+
- spec/support/custom_matchers.rb
|
|
166
|
+
- spec/fixtures/test_case_clean.rb
|
|
172
167
|
- spec/fixtures/test_case_before_fork_raises.rb
|
|
173
168
|
- spec/fixtures/test_case_environment.rb
|
|
174
169
|
- spec/fixtures/test_case_no_workers.rb
|
|
175
170
|
- spec/fixtures/test_case_after_fork_raises.rb
|
|
176
|
-
- spec/
|
|
177
|
-
- spec/
|
|
171
|
+
- spec/resqued/config_spec.rb
|
|
172
|
+
- spec/resqued/config/fork_event_spec.rb
|
|
173
|
+
- spec/resqued/config/worker_spec.rb
|
|
174
|
+
- spec/resqued/sleepy_spec.rb
|
|
175
|
+
- spec/resqued/test_case_spec.rb
|
|
176
|
+
- spec/resqued/start_ctx_spec.rb
|
|
177
|
+
- spec/resqued/backoff_spec.rb
|