omnes 0.1.0 → 0.2.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 +4 -4
- data/.github/workflows/test.yml +1 -1
- data/.gitignore +1 -0
- data/.rubocop.yml +2 -2
- data/CHANGELOG.md +25 -1
- data/README.md +134 -27
- data/lib/omnes/bus.rb +55 -13
- data/lib/omnes/configurable.rb +108 -0
- data/lib/omnes/errors.rb +39 -1
- data/lib/omnes/event.rb +2 -2
- data/lib/omnes/publication.rb +5 -14
- data/lib/omnes/publication_context.rb +41 -0
- data/lib/omnes/subscriber/adapter/active_job.rb +10 -6
- data/lib/omnes/subscriber/adapter/method.rb +2 -2
- data/lib/omnes/subscriber/adapter/sidekiq.rb +22 -8
- data/lib/omnes/subscriber/adapter.rb +6 -0
- data/lib/omnes/subscriber/state.rb +29 -12
- data/lib/omnes/subscriber.rb +14 -12
- data/lib/omnes/subscription.rb +25 -4
- data/lib/omnes/version.rb +1 -1
- data/lib/omnes.rb +10 -37
- data/omnes.gemspec +2 -4
- metadata +13 -26
- data/Gemfile.lock +0 -92
data/lib/omnes/event.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "omnes/configurable"
|
4
4
|
|
5
5
|
module Omnes
|
6
6
|
# Event mixin for custom classes
|
@@ -27,7 +27,7 @@ module Omnes
|
|
27
27
|
# bus.publish(MyEvent.new(1))
|
28
28
|
# ```
|
29
29
|
module Event
|
30
|
-
extend
|
30
|
+
extend Configurable
|
31
31
|
|
32
32
|
# Generates the event name for an event instance
|
33
33
|
#
|
data/lib/omnes/publication.rb
CHANGED
@@ -19,25 +19,16 @@ module Omnes
|
|
19
19
|
# @return [Array<Omnes::Execution>]
|
20
20
|
attr_reader :executions
|
21
21
|
|
22
|
-
#
|
22
|
+
# Publication context, shared by all triggered executions
|
23
23
|
#
|
24
|
-
#
|
25
|
-
|
26
|
-
#
|
27
|
-
# @return [Thread::Backtrace::Location]
|
28
|
-
attr_reader :caller_location
|
29
|
-
|
30
|
-
# Time of the event publication
|
31
|
-
#
|
32
|
-
# @return [Time]
|
33
|
-
attr_reader :time
|
24
|
+
# @return [Omnes::PublicationContext]
|
25
|
+
attr_reader :context
|
34
26
|
|
35
27
|
# @api private
|
36
|
-
def initialize(event:, executions:,
|
28
|
+
def initialize(event:, executions:, context:)
|
37
29
|
@event = event
|
38
30
|
@executions = executions
|
39
|
-
@
|
40
|
-
@time = time
|
31
|
+
@context = context
|
41
32
|
end
|
42
33
|
end
|
43
34
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Omnes
|
4
|
+
# Context for an event publication
|
5
|
+
#
|
6
|
+
# An instance of this class is shared between all the executions that are
|
7
|
+
# triggered by the publication of a given event. It's provided to the
|
8
|
+
# subscriptions as their second argument when they take it.
|
9
|
+
#
|
10
|
+
# This class is useful mainly for debugging and logging purposes.
|
11
|
+
class PublicationContext
|
12
|
+
# Location for the event publisher
|
13
|
+
#
|
14
|
+
# It's set by {Omnes::Bus#publish}, and it points to the caller of that
|
15
|
+
# method.
|
16
|
+
#
|
17
|
+
# @return [Thread::Backtrace::Location]
|
18
|
+
attr_reader :caller_location
|
19
|
+
|
20
|
+
# Time of the event publication
|
21
|
+
#
|
22
|
+
# @return [Time]
|
23
|
+
attr_reader :time
|
24
|
+
|
25
|
+
# @api private
|
26
|
+
def initialize(caller_location:, time:)
|
27
|
+
@caller_location = caller_location
|
28
|
+
@time = time
|
29
|
+
end
|
30
|
+
|
31
|
+
# Serialized version of a publication context
|
32
|
+
#
|
33
|
+
# @return Hash<String, String>
|
34
|
+
def serialized
|
35
|
+
{
|
36
|
+
"caller_location" => caller_location.to_s,
|
37
|
+
"time" => time.to_s
|
38
|
+
}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "omnes/configurable"
|
4
4
|
|
5
5
|
module Omnes
|
6
6
|
module Subscriber
|
@@ -42,7 +42,7 @@ module Omnes
|
|
42
42
|
# Omnes.config.subscriber.adapter.active_job.serializer = :serialized_payload.to_proc
|
43
43
|
# ```
|
44
44
|
module ActiveJob
|
45
|
-
extend
|
45
|
+
extend Configurable
|
46
46
|
|
47
47
|
setting :serializer, default: :payload.to_proc
|
48
48
|
|
@@ -52,8 +52,8 @@ module Omnes
|
|
52
52
|
end
|
53
53
|
|
54
54
|
# @api private
|
55
|
-
def self.call(instance, event)
|
56
|
-
self.[].(instance, event)
|
55
|
+
def self.call(instance, event, publication_context)
|
56
|
+
self.[].(instance, event, publication_context)
|
57
57
|
end
|
58
58
|
|
59
59
|
# @api private
|
@@ -64,8 +64,12 @@ module Omnes
|
|
64
64
|
@serializer = serializer
|
65
65
|
end
|
66
66
|
|
67
|
-
def call(instance, event)
|
68
|
-
|
67
|
+
def call(instance, event, publication_context)
|
68
|
+
if Subscription.takes_publication_context?(instance.method(:perform))
|
69
|
+
instance.class.perform_later(serializer.(event), publication_context.serialized)
|
70
|
+
else
|
71
|
+
instance.class.perform_later(serializer.(event))
|
72
|
+
end
|
69
73
|
end
|
70
74
|
end
|
71
75
|
end
|
@@ -7,7 +7,7 @@ module Omnes
|
|
7
7
|
module Adapter
|
8
8
|
# Builds a callback from a method of the instance
|
9
9
|
#
|
10
|
-
# You can use instance of this class as the adapter:
|
10
|
+
# You can use an instance of this class as the adapter:
|
11
11
|
#
|
12
12
|
# ```ruby
|
13
13
|
# handle :foo, with: Adapter::Method.new(:foo)
|
@@ -29,7 +29,7 @@ module Omnes
|
|
29
29
|
def call(instance)
|
30
30
|
check_method(instance)
|
31
31
|
|
32
|
-
|
32
|
+
instance.method(name)
|
33
33
|
end
|
34
34
|
|
35
35
|
private
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "omnes/configurable"
|
4
4
|
|
5
5
|
module Omnes
|
6
6
|
module Subscriber
|
@@ -49,7 +49,7 @@ module Omnes
|
|
49
49
|
# @example
|
50
50
|
# handle :my_event, with: Adapter::Sidekiq.in(60)
|
51
51
|
module Sidekiq
|
52
|
-
extend
|
52
|
+
extend Configurable
|
53
53
|
|
54
54
|
setting :serializer, default: :payload.to_proc
|
55
55
|
|
@@ -59,8 +59,8 @@ module Omnes
|
|
59
59
|
end
|
60
60
|
|
61
61
|
# @api private
|
62
|
-
def self.call(instance, event)
|
63
|
-
self.[].(instance, event)
|
62
|
+
def self.call(instance, event, publication_context)
|
63
|
+
self.[].(instance, event, publication_context)
|
64
64
|
end
|
65
65
|
|
66
66
|
# @param seconds [Integer]
|
@@ -76,15 +76,29 @@ module Omnes
|
|
76
76
|
@serializer = serializer
|
77
77
|
end
|
78
78
|
|
79
|
-
def call(instance, event)
|
80
|
-
instance
|
79
|
+
def call(instance, event, publication_context)
|
80
|
+
if takes_publication_context?(instance)
|
81
|
+
instance.class.perform_async(serializer.(event), publication_context.serialized)
|
82
|
+
else
|
83
|
+
instance.class.perform_async(serializer.(event))
|
84
|
+
end
|
81
85
|
end
|
82
86
|
|
83
87
|
def in(seconds)
|
84
|
-
lambda do |instance, event|
|
85
|
-
|
88
|
+
lambda do |instance, event, publication_context|
|
89
|
+
if takes_publication_context?(instance)
|
90
|
+
instance.class.perform_in(seconds, serializer.(event), publication_context.serialized)
|
91
|
+
else
|
92
|
+
instance.class.perform_in(seconds, serializer.(event))
|
93
|
+
end
|
86
94
|
end
|
87
95
|
end
|
96
|
+
|
97
|
+
private
|
98
|
+
|
99
|
+
def takes_publication_context?(instance)
|
100
|
+
Subscription.takes_publication_context?(instance.method(:perform))
|
101
|
+
end
|
88
102
|
end
|
89
103
|
end
|
90
104
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "omnes/configurable"
|
3
4
|
require "omnes/subscriber/adapter/active_job"
|
4
5
|
require "omnes/subscriber/adapter/method"
|
5
6
|
require "omnes/subscriber/adapter/sidekiq"
|
@@ -14,6 +15,11 @@ module Omnes
|
|
14
15
|
# Alternatively, they can be curried and only take the instance as an
|
15
16
|
# argument, returning a one-argument callable taking the event.
|
16
17
|
module Adapter
|
18
|
+
extend Configurable
|
19
|
+
|
20
|
+
nest_config Sidekiq
|
21
|
+
nest_config ActiveJob
|
22
|
+
|
17
23
|
# @api private
|
18
24
|
# TODO: Simplify when when we can take callables and Proc in a polymorphic
|
19
25
|
# way: https://bugs.ruby-lang.org/issues/18644
|
@@ -10,6 +10,11 @@ module Omnes
|
|
10
10
|
class State
|
11
11
|
attr_reader :subscription_definitions, :calling_cache, :autodiscover_strategy
|
12
12
|
|
13
|
+
# @api private
|
14
|
+
def self.IdType(value)
|
15
|
+
value.respond_to?(:call) ? value : ->(_instance) { value }
|
16
|
+
end
|
17
|
+
|
13
18
|
def initialize(autodiscover_strategy:, subscription_definitions: [], calling_cache: [])
|
14
19
|
@subscription_definitions = subscription_definitions
|
15
20
|
@calling_cache = calling_cache
|
@@ -19,9 +24,9 @@ module Omnes
|
|
19
24
|
def call(bus, instance)
|
20
25
|
raise MultipleSubscriberSubscriptionAttemptError if already_called?(bus, instance)
|
21
26
|
|
22
|
-
|
27
|
+
all_subscription_definitions = subscription_definitions + autodiscovered_subscription_definitions(bus, instance)
|
23
28
|
|
24
|
-
definitions =
|
29
|
+
definitions = all_subscription_definitions.map { |defn| defn.(bus, instance) }
|
25
30
|
|
26
31
|
subscribe_definitions(definitions, bus, instance).tap do
|
27
32
|
mark_as_called(bus, instance)
|
@@ -42,26 +47,38 @@ module Omnes
|
|
42
47
|
@calling_cache << [bus, instance]
|
43
48
|
end
|
44
49
|
|
45
|
-
def
|
46
|
-
|
47
|
-
method_name = autodiscover_strategy.(event_name)
|
48
|
-
next unless instance.respond_to?(method_name, true)
|
50
|
+
def autodiscovered_subscription_definitions(bus, instance)
|
51
|
+
return [] unless autodiscover_strategy
|
49
52
|
|
50
|
-
|
53
|
+
bus.registry.event_names.reduce([]) do |defs, event_name|
|
54
|
+
method_name = autodiscover_strategy.(event_name)
|
55
|
+
if instance.respond_to?(method_name, true)
|
51
56
|
[
|
52
|
-
|
53
|
-
|
57
|
+
*defs,
|
58
|
+
autodiscovered_subscription_definition(event_name, method_name)
|
54
59
|
]
|
60
|
+
else
|
61
|
+
defs
|
55
62
|
end
|
56
63
|
end
|
57
64
|
end
|
58
65
|
|
66
|
+
def autodiscovered_subscription_definition(event_name, method_name)
|
67
|
+
lambda do |_bus, _instance|
|
68
|
+
[
|
69
|
+
Subscription::SINGLE_EVENT_MATCHER.curry[event_name],
|
70
|
+
Adapter.Type(Adapter::Method.new(method_name)),
|
71
|
+
Subscription.random_id
|
72
|
+
]
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
59
76
|
def subscribe_definitions(definitions, bus, instance)
|
60
|
-
matcher_with_callbacks = definitions.map do |(matcher, adapter)|
|
61
|
-
[matcher, adapter.curry[instance]]
|
77
|
+
matcher_with_callbacks = definitions.map do |(matcher, adapter, id)|
|
78
|
+
[matcher, adapter.curry[instance], id]
|
62
79
|
end
|
63
80
|
|
64
|
-
matcher_with_callbacks.map { |matcher, callback| bus.subscribe_with_matcher(matcher, callback) }
|
81
|
+
matcher_with_callbacks.map { |matcher, callback, id| bus.subscribe_with_matcher(matcher, callback, id: id) }
|
65
82
|
end
|
66
83
|
end
|
67
84
|
end
|
data/lib/omnes/subscriber.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/configurable"
|
4
3
|
require "omnes/subscriber/adapter"
|
5
4
|
require "omnes/subscriber/state"
|
6
5
|
require "omnes/subscription"
|
@@ -122,14 +121,14 @@ module Omnes
|
|
122
121
|
# bus. However, you can subscribe distinct instances to the same bus or the
|
123
122
|
# same instance to different buses.
|
124
123
|
module Subscriber
|
125
|
-
extend
|
124
|
+
extend Configurable
|
126
125
|
|
127
126
|
# @api private
|
128
127
|
ON_PREFIX_STRATEGY = ->(event_name) { :"on_#{event_name}" }
|
129
128
|
|
130
129
|
setting :autodiscover, default: false
|
131
|
-
|
132
130
|
setting :autodiscover_strategy, default: ON_PREFIX_STRATEGY
|
131
|
+
nest_config Adapter
|
133
132
|
|
134
133
|
# Includes with options
|
135
134
|
#
|
@@ -193,11 +192,12 @@ module Omnes
|
|
193
192
|
#
|
194
193
|
# @param event_name [Symbol]
|
195
194
|
# @param with [Symbol, #call] Public method in the class or an adapter
|
196
|
-
|
195
|
+
# @param id [Symbol] Unique identifier for the subscription
|
196
|
+
def handle(event_name, with:, id: Subscription.random_id)
|
197
197
|
@_mutex.synchronize do
|
198
|
-
@_state.add_subscription_definition do |bus|
|
198
|
+
@_state.add_subscription_definition do |bus, instance|
|
199
199
|
bus.registry.check_event_name(event_name)
|
200
|
-
[Subscription::SINGLE_EVENT_MATCHER.curry[event_name], Adapter.Type(with)]
|
200
|
+
[Subscription::SINGLE_EVENT_MATCHER.curry[event_name], Adapter.Type(with), State.IdType(id).(instance)]
|
201
201
|
end
|
202
202
|
end
|
203
203
|
end
|
@@ -205,10 +205,11 @@ module Omnes
|
|
205
205
|
# Handles all events
|
206
206
|
#
|
207
207
|
# @param with [Symbol, #call] Public method in the class or an adapter
|
208
|
-
|
208
|
+
# @param id [Symbol] Unique identifier for the subscription
|
209
|
+
def handle_all(with:, id: Subscription.random_id)
|
209
210
|
@_mutex.synchronize do
|
210
|
-
@_state.add_subscription_definition do |_bus|
|
211
|
-
[Subscription::ALL_EVENTS_MATCHER, Adapter.Type(with)]
|
211
|
+
@_state.add_subscription_definition do |_bus, instance|
|
212
|
+
[Subscription::ALL_EVENTS_MATCHER, Adapter.Type(with), State.IdType(id).(instance)]
|
212
213
|
end
|
213
214
|
end
|
214
215
|
end
|
@@ -217,10 +218,11 @@ module Omnes
|
|
217
218
|
#
|
218
219
|
# @param matcher [#call]
|
219
220
|
# @param with [Symbol, #call] Public method in the class or an adapter
|
220
|
-
|
221
|
+
# @param id [Symbol] Unique identifier for the subscription
|
222
|
+
def handle_with_matcher(matcher, with:, id: Subscription.random_id)
|
221
223
|
@_mutex.synchronize do
|
222
|
-
@_state.add_subscription_definition do |_bus|
|
223
|
-
[matcher, Adapter.Type(with)]
|
224
|
+
@_state.add_subscription_definition do |_bus, instance|
|
225
|
+
[matcher, Adapter.Type(with), State.IdType(id).(instance)]
|
224
226
|
end
|
225
227
|
end
|
226
228
|
end
|
data/lib/omnes/subscription.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require "benchmark"
|
4
4
|
require "omnes/execution"
|
5
|
+
require "securerandom"
|
5
6
|
|
6
7
|
module Omnes
|
7
8
|
# Subscription to an event
|
@@ -24,19 +25,39 @@ module Omnes
|
|
24
25
|
ALL_EVENTS_MATCHER = ->(_candidate) { true }
|
25
26
|
|
26
27
|
# @api private
|
27
|
-
|
28
|
+
def self.random_id
|
29
|
+
SecureRandom.uuid.to_sym
|
30
|
+
end
|
31
|
+
|
32
|
+
# @api private
|
33
|
+
def self.takes_publication_context?(callable)
|
34
|
+
callable.parameters.count == 2
|
35
|
+
end
|
28
36
|
|
29
37
|
# @api private
|
30
|
-
|
38
|
+
attr_reader :matcher, :callback, :id
|
39
|
+
|
40
|
+
# @api private
|
41
|
+
def initialize(matcher:, callback:, id:)
|
42
|
+
raise Omnes::InvalidSubscriptionNameError.new(id: id) unless id.is_a?(Symbol)
|
43
|
+
|
31
44
|
@matcher = matcher
|
32
45
|
@callback = callback
|
46
|
+
@id = id
|
33
47
|
end
|
34
48
|
|
35
49
|
# @api private
|
36
|
-
def call(event)
|
50
|
+
def call(event, publication_context)
|
37
51
|
result = nil
|
38
52
|
benchmark = Benchmark.measure do
|
39
|
-
|
53
|
+
# work around Ruby not being able to tell remaining arity for a curried
|
54
|
+
# function (or uncurrying), because we want to be able to create subscriber
|
55
|
+
# adapters partially applying the subscriber instance
|
56
|
+
result = begin
|
57
|
+
@callback.(event, publication_context)
|
58
|
+
rescue ArgumentError
|
59
|
+
@callback.(event)
|
60
|
+
end
|
40
61
|
end
|
41
62
|
|
42
63
|
Execution.new(subscription: self, result: result, benchmark: benchmark)
|
data/lib/omnes/version.rb
CHANGED
data/lib/omnes.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "omnes/bus"
|
4
|
+
require "omnes/configurable"
|
4
5
|
require "omnes/event"
|
5
6
|
require "omnes/subscriber"
|
6
7
|
require "omnes/version"
|
@@ -33,50 +34,22 @@ require "omnes/version"
|
|
33
34
|
# Refer to {Omnes::Subscriber} for how to provide event handlers through methods
|
34
35
|
# defined in a class.
|
35
36
|
module Omnes
|
36
|
-
|
37
|
-
#
|
38
|
-
# TODO: Make automation for it
|
39
|
-
#
|
40
|
-
# @return [Omnes::Config]
|
41
|
-
def self.config
|
42
|
-
Config
|
43
|
-
end
|
44
|
-
|
45
|
-
# Wrapper for the configuration of Omnes components
|
46
|
-
module Config
|
47
|
-
# {Omnes::Subscriber} configuration
|
48
|
-
#
|
49
|
-
# @return [Dry::Configurable::Config]
|
50
|
-
def self.subscriber
|
51
|
-
Omnes::Subscriber.config.tap do |klass|
|
52
|
-
klass.define_singleton_method(:adapter) do
|
53
|
-
Module.new do
|
54
|
-
def self.sidekiq
|
55
|
-
Omnes::Subscriber::Adapter::Sidekiq.config
|
56
|
-
end
|
37
|
+
extend Configurable
|
57
38
|
|
58
|
-
|
59
|
-
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
# {Omnes::Event} configuration
|
67
|
-
#
|
68
|
-
# @return [Dry::Configurable::Config]
|
69
|
-
def self.event
|
70
|
-
Omnes::Event.config
|
71
|
-
end
|
72
|
-
end
|
39
|
+
nest_config Subscriber
|
40
|
+
nest_config Event
|
73
41
|
|
74
42
|
# @api private
|
75
43
|
def self.included(klass)
|
76
44
|
klass.define_method(:omnes_bus) { @omnes_bus ||= Bus.new(cal_loc_start: 2) }
|
77
45
|
Bus.instance_methods(false).each do |method|
|
78
46
|
klass.define_method(method) do |*args, **kwargs, &block|
|
79
|
-
|
47
|
+
# TODO: Forward with ... once we deprecate ruby 2.5 & 2.6
|
48
|
+
if kwargs.any?
|
49
|
+
omnes_bus.send(method, *args, **kwargs, &block)
|
50
|
+
else
|
51
|
+
omnes_bus.send(method, *args, &block)
|
52
|
+
end
|
80
53
|
end
|
81
54
|
end
|
82
55
|
end
|
data/omnes.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
MSG
|
18
18
|
spec.homepage = "https://github.com/nebulab/omnes"
|
19
19
|
spec.license = "MIT"
|
20
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
20
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
21
21
|
|
22
22
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
23
23
|
|
@@ -36,9 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
37
37
|
spec.require_paths = ["lib"]
|
38
38
|
|
39
|
-
spec.
|
40
|
-
|
41
|
-
spec.add_development_dependency "activejob", "~> 7.0"
|
39
|
+
spec.add_development_dependency "activejob"
|
42
40
|
spec.add_development_dependency "redcarpet", "~> 3.5"
|
43
41
|
spec.add_development_dependency "sidekiq", "~> 6.4"
|
44
42
|
spec.add_development_dependency "yard", "~> 0.9"
|
metadata
CHANGED
@@ -1,43 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omnes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc Busqué
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03
|
11
|
+
date: 2022-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: dry-configurable
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.14'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.14'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: activejob
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
|
-
- - "
|
17
|
+
- - ">="
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
19
|
+
version: '0'
|
34
20
|
type: :development
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- - "
|
24
|
+
- - ">="
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
26
|
+
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: redcarpet
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,7 +87,6 @@ files:
|
|
101
87
|
- CHANGELOG.md
|
102
88
|
- CODE_OF_CONDUCT.md
|
103
89
|
- Gemfile
|
104
|
-
- Gemfile.lock
|
105
90
|
- LICENSE.txt
|
106
91
|
- README.md
|
107
92
|
- Rakefile
|
@@ -109,10 +94,12 @@ files:
|
|
109
94
|
- bin/setup
|
110
95
|
- lib/omnes.rb
|
111
96
|
- lib/omnes/bus.rb
|
97
|
+
- lib/omnes/configurable.rb
|
112
98
|
- lib/omnes/errors.rb
|
113
99
|
- lib/omnes/event.rb
|
114
100
|
- lib/omnes/execution.rb
|
115
101
|
- lib/omnes/publication.rb
|
102
|
+
- lib/omnes/publication_context.rb
|
116
103
|
- lib/omnes/registry.rb
|
117
104
|
- lib/omnes/subscriber.rb
|
118
105
|
- lib/omnes/subscriber/adapter.rb
|
@@ -135,7 +122,7 @@ metadata:
|
|
135
122
|
source_code_uri: https://github.com/nebulab/omnes
|
136
123
|
changelog_uri: https://github.com/nebulab/omnes/CHANGELOG.md
|
137
124
|
rubygems_mfa_required: 'true'
|
138
|
-
post_install_message:
|
125
|
+
post_install_message:
|
139
126
|
rdoc_options: []
|
140
127
|
require_paths:
|
141
128
|
- lib
|
@@ -143,15 +130,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
143
130
|
requirements:
|
144
131
|
- - ">="
|
145
132
|
- !ruby/object:Gem::Version
|
146
|
-
version: 2.
|
133
|
+
version: 2.5.0
|
147
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
135
|
requirements:
|
149
136
|
- - ">="
|
150
137
|
- !ruby/object:Gem::Version
|
151
138
|
version: '0'
|
152
139
|
requirements: []
|
153
|
-
rubygems_version: 3.2
|
154
|
-
signing_key:
|
140
|
+
rubygems_version: 3.1.2
|
141
|
+
signing_key:
|
155
142
|
specification_version: 4
|
156
143
|
summary: Pub/Sub for ruby
|
157
144
|
test_files: []
|