symphony 0.13.0 → 0.14.1
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
- 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
|