symphony 0.13.0 → 0.14.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +16 -0
- data/README.md +4 -1
- data/USAGE.rdoc +27 -13
- data/lib/symphony/daemon.rb +2 -7
- data/lib/symphony/queue.rb +17 -11
- data/lib/symphony/task.rb +12 -0
- data/lib/symphony.rb +1 -5
- data/spec/symphony/daemon_spec.rb +0 -6
- data/spec/symphony/queue_spec.rb +27 -1
- data/spec/symphony/task_spec.rb +17 -0
- data.tar.gz.sig +0 -0
- metadata +64 -54
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8f391328cf5c098e87f56b3f036f676ab7b884a35f033c54c75fa83456afb8a
|
4
|
+
data.tar.gz: 1fbc3e3ab5a9e0aae6bdd0f0f3a9210689d3b0caba82e3668a5f9676e99b2b73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5d4049d202b62371da4402404d3b53254de607e356e298d43f72c62de8305e4f0b0d54fb954f5dd5bd857665d1e5ff27f190ea89030e6faf5210efe05f9e54a
|
7
|
+
data.tar.gz: 4c6aa83b99edd4ccb32f087b8d39b0f6c177ddeacd158277726b49307e7fc07e2ca2f8bcca3d98db8c2ec8f25e60fb70277d5becf86470b313280a2308603d12
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/History.rdoc
CHANGED
@@ -2,6 +2,22 @@
|
|
2
2
|
|
3
3
|
---
|
4
4
|
|
5
|
+
== v0.14.1 [2023-03-09] Mahlon E. Smith <mahlon@martini.nu>
|
6
|
+
|
7
|
+
Housekeeping:
|
8
|
+
|
9
|
+
- Bump dependencies for Ruby 3.x.
|
10
|
+
- Remove (unused) revision VCS keyword expansion.
|
11
|
+
|
12
|
+
|
13
|
+
== v0.14.0 [2020-07-23] Michael Granger <ged@faeriemud.org>
|
14
|
+
|
15
|
+
Improvements:
|
16
|
+
|
17
|
+
- Allow `x-queue-type` to be specified for a `Task`. Thanks to
|
18
|
+
Alyssa Verkade <averkade@costar.com> for the patch.
|
19
|
+
|
20
|
+
|
5
21
|
== v0.13.0 [2020-03-09] Michael Granger <ged@faeriemud.org>
|
6
22
|
|
7
23
|
Improvements:
|
data/README.md
CHANGED
data/USAGE.rdoc
CHANGED
@@ -79,14 +79,14 @@ calling #run on the class itself.
|
|
79
79
|
== The Simplest Task
|
80
80
|
|
81
81
|
#!/usr/bin/env ruby
|
82
|
-
|
82
|
+
|
83
83
|
require 'symphony'
|
84
|
-
|
84
|
+
|
85
85
|
class Test < Symphony::Task
|
86
|
-
|
86
|
+
|
87
87
|
# Process all events
|
88
88
|
subscribe_to '#'
|
89
|
-
|
89
|
+
|
90
90
|
def work( payload, metadata )
|
91
91
|
puts "I received an event: %p with a payload of %p" % [
|
92
92
|
metadata[ :delivery_info ][ :routing_key ],
|
@@ -95,7 +95,7 @@ calling #run on the class itself.
|
|
95
95
|
return true
|
96
96
|
end
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
Symphony.load_config( 'etc/config.yml' )
|
100
100
|
Test.run
|
101
101
|
|
@@ -239,13 +239,13 @@ By default, Symphony will try and create a queue based on the Class
|
|
239
239
|
name of the task. You can override this per-task.
|
240
240
|
|
241
241
|
class Test < Symphony::Task
|
242
|
-
|
242
|
+
|
243
243
|
# Process all events
|
244
244
|
subscribe_to '#'
|
245
|
-
|
245
|
+
|
246
246
|
# I don't want to connect to a 'test' queue, lets make it interesting:
|
247
247
|
queue_name 'shazzzaaaam'
|
248
|
-
|
248
|
+
|
249
249
|
def work( payload, metadata )
|
250
250
|
...
|
251
251
|
|
@@ -261,14 +261,28 @@ can tell a task to create a persistent queue instead of an auto-delete queue:
|
|
261
261
|
|
262
262
|
== Queue Re-binding
|
263
263
|
|
264
|
-
If you want Symphony to re-bind a worker's queue when it starts up, you call
|
264
|
+
If you want Symphony to re-bind a worker's queue when it starts up, you call
|
265
|
+
tell it to with +always_rebind+:
|
265
266
|
|
266
267
|
always_rebind true
|
267
268
|
|
268
|
-
Note that re-binding doesn't *unbind* from the existing pattern/s, so you'll
|
269
|
+
Note that re-binding doesn't *unbind* from the existing pattern/s, so you'll
|
269
270
|
need to account for this in the Task's +work+ method.
|
270
271
|
|
271
272
|
|
273
|
+
== Queue Type
|
274
|
+
|
275
|
+
If you're running a version of RabbitMQ that supports the `x-queue-type`
|
276
|
+
argument (e.g., for quorum queues), you can specify a value for it using the
|
277
|
+
`queue_type` declaration:
|
278
|
+
|
279
|
+
queue_type 'quorum'
|
280
|
+
|
281
|
+
Note that several other queue settings might not work with some kinds of
|
282
|
+
queues; the validity of the combination of the task's settings are left to
|
283
|
+
the implementor.
|
284
|
+
|
285
|
+
|
272
286
|
= Plugins
|
273
287
|
|
274
288
|
Plugins change or enhance the behavior of a Symphony::Task.
|
@@ -287,7 +301,7 @@ the process name to display a total count and jobs per second rate.
|
|
287
301
|
prepend Symphony::Metrics
|
288
302
|
# ...
|
289
303
|
end
|
290
|
-
|
304
|
+
|
291
305
|
|
292
306
|
== Routing
|
293
307
|
|
@@ -300,13 +314,13 @@ receive multiple message topics much easier to maintain and test.
|
|
300
314
|
|
301
315
|
class Test < Symphony::Task
|
302
316
|
include Symphony::Routing
|
303
|
-
|
317
|
+
|
304
318
|
on 'users.create', 'workstation.create' do |payload, metadata|
|
305
319
|
puts "A user or workstation wants to be created!"
|
306
320
|
# ...
|
307
321
|
return true
|
308
322
|
end
|
309
|
-
|
323
|
+
|
310
324
|
on 'users.delete' do |payload, metadata|
|
311
325
|
puts "A user wants to be deleted!"
|
312
326
|
return true
|
data/lib/symphony/daemon.rb
CHANGED
@@ -33,13 +33,8 @@ class Symphony::Daemon
|
|
33
33
|
#
|
34
34
|
|
35
35
|
### Get the daemon's version as a String.
|
36
|
-
def self::version_string
|
37
|
-
|
38
|
-
if include_buildnum
|
39
|
-
rev = Symphony::REVISION[/: ([[:xdigit:]]+)/, 1] || '0'
|
40
|
-
vstring << " (build %s)" % [ rev ]
|
41
|
-
end
|
42
|
-
return vstring
|
36
|
+
def self::version_string
|
37
|
+
return "%s %s" % [ self.name, Symphony::VERSION ]
|
43
38
|
end
|
44
39
|
|
45
40
|
|
data/lib/symphony/queue.rb
CHANGED
@@ -150,13 +150,14 @@ class Symphony::Queue
|
|
150
150
|
|
151
151
|
### Create a new Queue for the specified +task_class+.
|
152
152
|
def initialize( task_class )
|
153
|
-
@name
|
154
|
-
@acknowledge
|
155
|
-
@consumer_tag
|
156
|
-
@routing_keys
|
157
|
-
@prefetch
|
158
|
-
@persistent
|
159
|
-
@always_rebind
|
153
|
+
@name = task_class.queue_name
|
154
|
+
@acknowledge = task_class.acknowledge
|
155
|
+
@consumer_tag = task_class.consumer_tag
|
156
|
+
@routing_keys = task_class.routing_keys
|
157
|
+
@prefetch = task_class.prefetch
|
158
|
+
@persistent = task_class.persistent
|
159
|
+
@always_rebind = task_class.always_rebind
|
160
|
+
@amqp_queue_type = task_class.queue_type
|
160
161
|
|
161
162
|
@amqp_queue = nil
|
162
163
|
@shutting_down = false
|
@@ -195,6 +196,10 @@ class Symphony::Queue
|
|
195
196
|
# Whether or not to re-bind the queue to the exchange during setup
|
196
197
|
attr_predicate :always_rebind
|
197
198
|
|
199
|
+
##
|
200
|
+
# The -x-queue-type of the queue, if any
|
201
|
+
attr_reader :amqp_queue_type
|
202
|
+
|
198
203
|
##
|
199
204
|
# The underlying Bunny::Queue this object manages
|
200
205
|
attr_reader :amqp_queue
|
@@ -256,19 +261,20 @@ class Symphony::Queue
|
|
256
261
|
exchange = self.class.amqp_exchange
|
257
262
|
channel = self.class.amqp_channel
|
258
263
|
created_queue = false
|
259
|
-
queue = nil
|
260
264
|
|
261
|
-
begin
|
262
|
-
|
265
|
+
queue = begin
|
266
|
+
existing_queue = channel.queue( self.name, passive: true )
|
263
267
|
channel.prefetch( prefetch_count )
|
264
268
|
self.log.info "Using pre-existing queue: %s" % [ self.name ]
|
269
|
+
existing_queue
|
265
270
|
rescue Bunny::NotFound => err
|
266
271
|
self.log.info "%s; creating a new queue instead." % [ err.message ]
|
267
272
|
created_queue = true
|
268
273
|
channel = self.class.reset_amqp_channel
|
269
274
|
channel.prefetch( prefetch_count )
|
270
275
|
|
271
|
-
|
276
|
+
arguments = { 'x-queue-type' => self.amqp_queue_type }.compact
|
277
|
+
channel.queue( self.name, auto_delete: !self.persistent, arguments: arguments )
|
272
278
|
end
|
273
279
|
|
274
280
|
if self.always_rebind? || created_queue
|
data/lib/symphony/task.rb
CHANGED
@@ -53,6 +53,7 @@ class Symphony::Task
|
|
53
53
|
@prefetch = 10
|
54
54
|
@persistent = false
|
55
55
|
@always_rebind = false
|
56
|
+
@queue_type = nil
|
56
57
|
|
57
58
|
|
58
59
|
### Create a new Task object and listen for work. Exits with the code returned
|
@@ -88,6 +89,7 @@ class Symphony::Task
|
|
88
89
|
super
|
89
90
|
|
90
91
|
subclass.instance_variable_set( :@queue, nil )
|
92
|
+
subclass.instance_variable_set( :@queue_type, nil )
|
91
93
|
subclass.instance_variable_set( :@always_rebind, false )
|
92
94
|
subclass.instance_variable_set( :@routing_keys, Set.new )
|
93
95
|
subclass.instance_variable_set( :@acknowledge, true )
|
@@ -143,6 +145,16 @@ class Symphony::Task
|
|
143
145
|
end
|
144
146
|
|
145
147
|
|
148
|
+
### Specify an x-queue-type for the underlying queue
|
149
|
+
def self::queue_type( type=nil )
|
150
|
+
if type
|
151
|
+
@queue_type = type
|
152
|
+
end
|
153
|
+
|
154
|
+
return @queue_type
|
155
|
+
end
|
156
|
+
|
157
|
+
|
146
158
|
### Set up one or more topic key patterns to use when binding the Task's queue
|
147
159
|
### to the exchange.
|
148
160
|
def self::subscribe_to( *routing_keys )
|
data/lib/symphony.rb
CHANGED
@@ -12,11 +12,7 @@ module Symphony
|
|
12
12
|
Configurability
|
13
13
|
|
14
14
|
# Library version constant
|
15
|
-
VERSION = '0.
|
16
|
-
|
17
|
-
# Version-control revision constant
|
18
|
-
REVISION = %q$Revision$
|
19
|
-
|
15
|
+
VERSION = '0.14.1'
|
20
16
|
|
21
17
|
# The name of the environment variable to check for config file overrides
|
22
18
|
CONFIG_ENV = 'SYMPHONY_CONFIG'
|
@@ -45,12 +45,6 @@ RSpec.describe Symphony::Daemon do
|
|
45
45
|
).to match( /#{described_class} #{Symphony::VERSION}/i )
|
46
46
|
end
|
47
47
|
|
48
|
-
it "can include its build number in its version string" do
|
49
|
-
expect(
|
50
|
-
described_class.version_string( true )
|
51
|
-
).to match( /\(build \p{Xdigit}+\)/i )
|
52
|
-
end
|
53
|
-
|
54
48
|
it "exits gracefully on one SIGINT" do
|
55
49
|
Symphony.tasks.clear
|
56
50
|
thr = Thread.new { daemon.run_tasks }
|
data/spec/symphony/queue_spec.rb
CHANGED
@@ -128,7 +128,33 @@ RSpec.describe Symphony::Queue do
|
|
128
128
|
expect( new_channel ).to receive( :prefetch ).
|
129
129
|
with( Symphony::Queue::DEFAULT_PREFETCH )
|
130
130
|
expect( new_channel ).to receive( :queue ).
|
131
|
-
with( queue.name, auto_delete: true ).
|
131
|
+
with( queue.name, auto_delete: true, arguments: {} ).
|
132
|
+
and_return( amqp_queue )
|
133
|
+
expect( amqp_queue ).to receive( :bind ).
|
134
|
+
with( described_class.amqp_exchange, routing_key: 'floppy.rabbit.#' )
|
135
|
+
|
136
|
+
expect( queue.create_amqp_queue ).to be( amqp_queue )
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
it "can declare the queue's x-queue-type" do
|
141
|
+
testing_task_class.subscribe_to( 'floppy.rabbit.#' )
|
142
|
+
testing_task_class.queue_type( 'classic' )
|
143
|
+
expect( described_class.amqp_channel ).to receive( :queue ).
|
144
|
+
with( queue.name, passive: true ).
|
145
|
+
and_raise( Bunny::NotFound.new("no such queue", described_class.amqp_channel, true) )
|
146
|
+
expect( described_class.amqp_channel ).to receive( :open? ).
|
147
|
+
and_return( false )
|
148
|
+
|
149
|
+
# Channel is reset after queue creation fails
|
150
|
+
new_channel = double( "New AMQP channel" )
|
151
|
+
amqp_queue = double( "AMQP queue" )
|
152
|
+
allow( described_class.amqp_session ).to receive( :create_channel ).
|
153
|
+
and_return( new_channel )
|
154
|
+
expect( new_channel ).to receive( :prefetch ).
|
155
|
+
with( Symphony::Queue::DEFAULT_PREFETCH )
|
156
|
+
expect( new_channel ).to receive( :queue ).
|
157
|
+
with( queue.name, auto_delete: true, arguments: { 'x-queue-type' => 'classic' } ).
|
132
158
|
and_return( amqp_queue )
|
133
159
|
expect( amqp_queue ).to receive( :bind ).
|
134
160
|
with( described_class.amqp_exchange, routing_key: 'floppy.rabbit.#' )
|
data/spec/symphony/task_spec.rb
CHANGED
@@ -99,6 +99,23 @@ RSpec.describe Symphony::Task do
|
|
99
99
|
end
|
100
100
|
|
101
101
|
|
102
|
+
it "can set the x-queue-type for the queue" do
|
103
|
+
task = Class.new( described_class ) do
|
104
|
+
queue_name 'wascally.wabbit'
|
105
|
+
queue_type 'classic'
|
106
|
+
end
|
107
|
+
expect( task.queue_type ).to eq( 'classic' )
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
it "has a queue type of nil if unspecified" do
|
112
|
+
task = Class.new( described_class ) do
|
113
|
+
queue_name 'wascally.wabbit'
|
114
|
+
end
|
115
|
+
expect( task.queue_type ).to eq( nil )
|
116
|
+
end
|
117
|
+
|
118
|
+
|
102
119
|
it "can set the number of messages to prefetch" do
|
103
120
|
task_class.prefetch( 10 )
|
104
121
|
expect( task_class.prefetch ).to eq( 10 )
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: symphony
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -11,122 +11,116 @@ bindir: bin
|
|
11
11
|
cert_chain:
|
12
12
|
- |
|
13
13
|
-----BEGIN CERTIFICATE-----
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
14
|
+
MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdtYWhs
|
15
|
+
b24vREM9bWFydGluaS9EQz1udTAeFw0yMTAxMTcwMDQzMDZaFw0zMTAxMTUwMDQz
|
16
|
+
MDZaMCIxIDAeBgNVBAMMF21haGxvbi9EQz1tYXJ0aW5pL0RDPW51MIIBojANBgkq
|
17
|
+
hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAsRZyNGaL3I8T2AkQsHKyixW10CY6T715
|
18
|
+
uOztbmZImekhmgE9Uj5xZCnUP4xG5ToJffgkxcbepyJwIHCjEQg7viL9EsA+rMNb
|
19
|
+
UX8dsa9jpvVD6nHAdoW8G0ee7SRBXhCfyNma8FtkDJfw2bwdKhxUKiHsULCSQ0Pd
|
20
|
+
p+4d5NnldgfB8cf4Hz9Ai/8FHacWnZVEiHa4Ngb5Fe42OUs+4XDQdpcgA7wCY633
|
21
|
+
q9rRVGK7MW9BzMv+hhQfElQMn1eDMgQVpO543viDT8JatwhhcYmKdzwTIIPAIybf
|
22
|
+
8MfJaimsh20OAqs3FAXNKjDVFbcXFfKUXXgVgMjUoEK5+Lp+pKPZXU4bIi5oYZqB
|
23
|
+
OttGPMD5rOWlAooWNQ7xbdHByUVqJmALSWHqPHdvVmAVsW8tNoB1qGbM+C6o80Ie
|
24
|
+
9H0389ja3TW4JK/0w/gFUmrVvYKRll44HaxS9nXNpiYBipbJmlR/R9qoe54ImQje
|
25
|
+
Z4vsWrWiDrK/oVYlUXOy7SE/jUAQF9UzAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
|
26
|
+
VR0PBAQDAgSwMB0GA1UdDgQWBBSx8TRqCmTPOARICKiZ3c66sIG3pTAcBgNVHREE
|
27
|
+
FTATgRFtYWhsb25AbWFydGluaS5udTAcBgNVHRIEFTATgRFtYWhsb25AbWFydGlu
|
28
|
+
aS5udTANBgkqhkiG9w0BAQsFAAOCAYEAHbiAZTe46/kp1Tkm4s6D30VBaYaAdaYG
|
29
|
+
bZIaAaHtJO9MbUNS0FA01fxQpptjpOQT3cNNf8CX8UHPTaSuPFMfgVWj1xiX7Byb
|
30
|
+
hqhUcUTENOuUxxWGDCa4orCFctc3yihojTKGtbhODHVSHf9DRDyalRcvmyWzxMFT
|
31
|
+
XtBS05OUXc9O1bKqzNaRc9nMGw6Y+V79hIex4mZlMBkhTeVKxeeweCXfELXOQRmB
|
32
|
+
FgPgUyQn0AaSpplx0YoWdy/99fEkXSMvgeEoiR1ApR6aUuTlvIr1yUgzVBpWU4mE
|
33
|
+
XC+Ig+3jhqufGyE/Do+1M7n5QLpgGfpy3QmoOiKeYt3XzR5Z7XoxCAaKHNRxVEga
|
34
|
+
ojmVnDNlLQkkZZkbFNGPHjCIBs7h+6eoIYvy/eQ82c4vd6w9rR4v9bKUL8NNkcSz
|
35
|
+
49pOzX5KHZLTS9DKeaP/xcGPz6C8MiwQdYrZarr2SHRASX1zFa79rkItO8kE6RDr
|
36
|
+
b6WDF79UvZ55ajtE00TiwqjQL/ZPEtbd
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2023-03-09 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: configurability
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '3.1'
|
47
|
-
- - "<="
|
44
|
+
- - "~>"
|
48
45
|
- !ruby/object:Gem::Version
|
49
|
-
version: '4.
|
46
|
+
version: '4.2'
|
50
47
|
type: :runtime
|
51
48
|
prerelease: false
|
52
49
|
version_requirements: !ruby/object:Gem::Requirement
|
53
50
|
requirements:
|
54
|
-
- - "
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: '3.1'
|
57
|
-
- - "<="
|
51
|
+
- - "~>"
|
58
52
|
- !ruby/object:Gem::Version
|
59
|
-
version: '4.
|
53
|
+
version: '4.2'
|
60
54
|
- !ruby/object:Gem::Dependency
|
61
55
|
name: loggability
|
62
56
|
requirement: !ruby/object:Gem::Requirement
|
63
57
|
requirements:
|
64
58
|
- - "~>"
|
65
59
|
- !ruby/object:Gem::Version
|
66
|
-
version: '0.
|
60
|
+
version: '0.18'
|
67
61
|
type: :runtime
|
68
62
|
prerelease: false
|
69
63
|
version_requirements: !ruby/object:Gem::Requirement
|
70
64
|
requirements:
|
71
65
|
- - "~>"
|
72
66
|
- !ruby/object:Gem::Version
|
73
|
-
version: '0.
|
67
|
+
version: '0.18'
|
74
68
|
- !ruby/object:Gem::Dependency
|
75
69
|
name: pluggability
|
76
70
|
requirement: !ruby/object:Gem::Requirement
|
77
71
|
requirements:
|
78
72
|
- - "~>"
|
79
73
|
- !ruby/object:Gem::Version
|
80
|
-
version: '0.
|
74
|
+
version: '0.8'
|
81
75
|
type: :runtime
|
82
76
|
prerelease: false
|
83
77
|
version_requirements: !ruby/object:Gem::Requirement
|
84
78
|
requirements:
|
85
79
|
- - "~>"
|
86
80
|
- !ruby/object:Gem::Version
|
87
|
-
version: '0.
|
81
|
+
version: '0.8'
|
88
82
|
- !ruby/object:Gem::Dependency
|
89
83
|
name: bunny
|
90
84
|
requirement: !ruby/object:Gem::Requirement
|
91
85
|
requirements:
|
92
86
|
- - "~>"
|
93
87
|
- !ruby/object:Gem::Version
|
94
|
-
version: '2.
|
88
|
+
version: '2.20'
|
95
89
|
type: :runtime
|
96
90
|
prerelease: false
|
97
91
|
version_requirements: !ruby/object:Gem::Requirement
|
98
92
|
requirements:
|
99
93
|
- - "~>"
|
100
94
|
- !ruby/object:Gem::Version
|
101
|
-
version: '2.
|
95
|
+
version: '2.20'
|
102
96
|
- !ruby/object:Gem::Dependency
|
103
97
|
name: sysexits
|
104
98
|
requirement: !ruby/object:Gem::Requirement
|
105
99
|
requirements:
|
106
100
|
- - "~>"
|
107
101
|
- !ruby/object:Gem::Version
|
108
|
-
version: '1.
|
102
|
+
version: '1.2'
|
109
103
|
type: :runtime
|
110
104
|
prerelease: false
|
111
105
|
version_requirements: !ruby/object:Gem::Requirement
|
112
106
|
requirements:
|
113
107
|
- - "~>"
|
114
108
|
- !ruby/object:Gem::Version
|
115
|
-
version: '1.
|
109
|
+
version: '1.2'
|
116
110
|
- !ruby/object:Gem::Dependency
|
117
111
|
name: msgpack
|
118
112
|
requirement: !ruby/object:Gem::Requirement
|
119
113
|
requirements:
|
120
114
|
- - "~>"
|
121
115
|
- !ruby/object:Gem::Version
|
122
|
-
version: '1.
|
116
|
+
version: '1.6'
|
123
117
|
type: :runtime
|
124
118
|
prerelease: false
|
125
119
|
version_requirements: !ruby/object:Gem::Requirement
|
126
120
|
requirements:
|
127
121
|
- - "~>"
|
128
122
|
- !ruby/object:Gem::Version
|
129
|
-
version: '1.
|
123
|
+
version: '1.6'
|
130
124
|
- !ruby/object:Gem::Dependency
|
131
125
|
name: metriks
|
132
126
|
requirement: !ruby/object:Gem::Requirement
|
@@ -161,42 +155,56 @@ dependencies:
|
|
161
155
|
requirements:
|
162
156
|
- - "~>"
|
163
157
|
- !ruby/object:Gem::Version
|
164
|
-
version: '0.
|
158
|
+
version: '0.22'
|
165
159
|
type: :development
|
166
160
|
prerelease: false
|
167
161
|
version_requirements: !ruby/object:Gem::Requirement
|
168
162
|
requirements:
|
169
163
|
- - "~>"
|
170
164
|
- !ruby/object:Gem::Version
|
171
|
-
version: '0.
|
165
|
+
version: '0.22'
|
166
|
+
- !ruby/object:Gem::Dependency
|
167
|
+
name: rdoc-generator-sixfish
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0.3'
|
173
|
+
type: :development
|
174
|
+
prerelease: false
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0.3'
|
172
180
|
- !ruby/object:Gem::Dependency
|
173
181
|
name: simplecov
|
174
182
|
requirement: !ruby/object:Gem::Requirement
|
175
183
|
requirements:
|
176
184
|
- - "~>"
|
177
185
|
- !ruby/object:Gem::Version
|
178
|
-
version: '0.
|
186
|
+
version: '0.22'
|
179
187
|
type: :development
|
180
188
|
prerelease: false
|
181
189
|
version_requirements: !ruby/object:Gem::Requirement
|
182
190
|
requirements:
|
183
191
|
- - "~>"
|
184
192
|
- !ruby/object:Gem::Version
|
185
|
-
version: '0.
|
193
|
+
version: '0.22'
|
186
194
|
- !ruby/object:Gem::Dependency
|
187
195
|
name: timecop
|
188
196
|
requirement: !ruby/object:Gem::Requirement
|
189
197
|
requirements:
|
190
198
|
- - "~>"
|
191
199
|
- !ruby/object:Gem::Version
|
192
|
-
version: '0.
|
200
|
+
version: '0.9'
|
193
201
|
type: :development
|
194
202
|
prerelease: false
|
195
203
|
version_requirements: !ruby/object:Gem::Requirement
|
196
204
|
requirements:
|
197
205
|
- - "~>"
|
198
206
|
- !ruby/object:Gem::Version
|
199
|
-
version: '0.
|
207
|
+
version: '0.9'
|
200
208
|
description: Symphony is a subscription-based asynchronous job system. It allows you
|
201
209
|
to define jobs that watch for lightweight events from a distributed-messaging AMQP
|
202
210
|
broker, and do work based on their payload.
|
@@ -246,13 +254,15 @@ files:
|
|
246
254
|
- spec/symphony/task_group_spec.rb
|
247
255
|
- spec/symphony/task_spec.rb
|
248
256
|
- spec/symphony_spec.rb
|
249
|
-
homepage: https://hg.sr.ht/~ged/
|
257
|
+
homepage: https://hg.sr.ht/~ged/Symphony
|
250
258
|
licenses:
|
251
259
|
- BSD-3-Clause
|
252
260
|
metadata:
|
253
|
-
homepage_uri: https://hg.sr.ht/~ged/
|
261
|
+
homepage_uri: https://hg.sr.ht/~ged/Symphony
|
254
262
|
documentation_uri: https://deveiate.org/code/symphony
|
255
263
|
changelog_uri: https://deveiate.org/code/symphony/History_md.html
|
264
|
+
source_uri: https://hg.sr.ht/~ged/Symphony/browse
|
265
|
+
bug_tracker_uri: https://todo.sr.ht/~ged/Symphony/browse
|
256
266
|
post_install_message:
|
257
267
|
rdoc_options: []
|
258
268
|
require_paths:
|
@@ -268,7 +278,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
268
278
|
- !ruby/object:Gem::Version
|
269
279
|
version: '0'
|
270
280
|
requirements: []
|
271
|
-
rubygems_version: 3.
|
281
|
+
rubygems_version: 3.4.6
|
272
282
|
signing_key:
|
273
283
|
specification_version: 4
|
274
284
|
summary: Symphony is a subscription-based asynchronous job system.
|
metadata.gz.sig
CHANGED
Binary file
|