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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69a99b3dc3c9e5a87d5a1bb25c28bf3255f19ad8aa2843ff543e068f4c768ac3
4
- data.tar.gz: 1c083a2547cbb2abc3ce39676679745541343bc02a275c7042c4327769335d81
3
+ metadata.gz: c8f391328cf5c098e87f56b3f036f676ab7b884a35f033c54c75fa83456afb8a
4
+ data.tar.gz: 1fbc3e3ab5a9e0aae6bdd0f0f3a9210689d3b0caba82e3668a5f9676e99b2b73
5
5
  SHA512:
6
- metadata.gz: a33510957bbd58b6be49c65a14726237c01c300f071b51799135c64962ec327f69bcce74912387b207d9964489f03b8ac614f7ccbc28eb97da992cbf6dd1bfba
7
- data.tar.gz: 1a5f13e6a1f59997d947ca5f6775e9d524f21f577865ae7ad9b60972bf113841865d0f444c3bd0494cc313fbb62759873ebd8d89a19f220c6c266a717ce27b74
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
@@ -1,7 +1,10 @@
1
1
  # symphony
2
2
 
3
3
  home
4
- : https://hg.sr.ht/~ged/symphony
4
+ : https://hg.sr.ht/~ged/Symphony
5
+
6
+ code
7
+ : https://hg.sr.ht/~ged/Symphony/browse
5
8
 
6
9
  docs
7
10
  : https://deveiate.org/code/symphony
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 tell it to with +always_rebind+:
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
@@ -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( include_buildnum=false )
37
- vstring = "%s %s" % [ self.name, Symphony::VERSION ]
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
 
@@ -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 = 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
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
- queue = channel.queue( self.name, passive: true )
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
- queue = channel.queue( self.name, auto_delete: !self.persistent )
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.13.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 }
@@ -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.#' )
@@ -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.13.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
- MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
15
- REM9RmFlcmllTVVEL0RDPW9yZzAeFw0xOTEwMDkwMDM2NTdaFw0yMDEwMDgwMDM2
16
- NTdaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
17
- hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyVhkRzvlEs0fe7145BYLfN6njX9ih5H
18
- L60U0p0euIurpv84op9CNKF9tx+1WKwyQvQP7qFGuZxkSUuWcP/sFhDXL1lWUuIl
19
- M4uHbGCRmOshDrF4dgnBeOvkHr1fIhPlJm5FO+Vew8tSQmlDsosxLUx+VB7DrVFO
20
- 5PU2AEbf04GGSrmqADGWXeaslaoRdb1fu/0M5qfPTRn5V39sWD9umuDAF9qqil/x
21
- Sl6phTvgBrG8GExHbNZpLARd3xrBYLEFsX7RvBn2UPfgsrtvpdXjsHGfpT3IPN+B
22
- vQ66lts4alKC69TE5cuKasWBm+16A4aEe3XdZBRNmtOu/g81gvwA7fkJHKllJuaI
23
- dXzdHqq+zbGZVSQ7pRYHYomD0IiDe1DbIouFnPWmagaBnGHwXkDT2bKKP+s2v21m
24
- ozilJg4aar2okb/RA6VS87o+d7g6LpDDMMQjH4G9OPnJENLdhu8KnPw/ivSVvQw7
25
- N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
26
- VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DAcBgNVHREE
27
- FTATgRFnZWRARmFlcmllTVVELm9yZzAcBgNVHRIEFTATgRFnZWRARmFlcmllTVVE
28
- Lm9yZzANBgkqhkiG9w0BAQsFAAOCAYEAFqsr6o0SvQRgjQVmhbQvExRnCMCoW1yb
29
- FJiN7A5RA2Iy2E61OG1Ul5nGmaDmx/PNB/6JIbIV3B9Uq8aTZx4uOjK7r8vMl1/t
30
- ZfY7r6HejJfXlcO2m6JDMbpdyEVv916LncBkzZRz6vnnNCx+31f15FKddxujpAFd
31
- qpn3JRQY+oj7ZkoccL/IUiDpxQWeS3oOoz9qr2kVTp8R50InZimt79FqCl/1m66W
32
- kdOuf+wM3DDx7Rt4IVNHrhGlyfMr7xjKW1Q3gll+pMN1DT6Ajx/t3JDSEg7BnnEW
33
- r7AciSO6J4ApUdqyG+coLFlGdtgFTgRHv7ihbQtDI7Z/LV7A4Spn1j2PK3j0Omri
34
- kSl1hPVigRytfgdVGiLXzvkkrkgj9EknCaj5UHbac7XvVBrljXj9hsnnqTANaKsg
35
- jBZSA+N+xUTgUWpXjjwsLZjzJkhWATJWq+krNXcqpwXo6HsjmdUxoFMt63RBb+sI
36
- XrxOxp8o0uOkU7FdLSGsyqJ2LzsR4obN
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: 2020-03-10 00:00:00.000000000 Z
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.99'
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.99'
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.11'
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.11'
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.4'
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.4'
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.0'
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.0'
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.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.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.0'
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.0'
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.12'
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.12'
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.8'
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.8'
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.8'
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.8'
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/symphony
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/symphony
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.1.2
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