use_cases 1.0.14 → 1.1.0
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/Gemfile.lock +3 -2
- data/lib/use_cases/events/publish_job.rb +1 -1
- data/lib/use_cases/events/publisher.rb +8 -36
- data/lib/use_cases/module_optins/publishing.rb +23 -21
- data/lib/use_cases/version.rb +1 -1
- data/use_cases.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7bcffb088175f9ee545ae73905c1f3238839e7d3242501296b90349c821db0ed
|
|
4
|
+
data.tar.gz: 91cec0de97c7a2f92738f8121cf502621f046742526972b1ae091df168dd4b07
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d59c2125f78aea4cf498715b921628ad0c652488840ac6e79cc7b9b2fe33f804b2330eff0b5e9931c910c21f9de4393d055f3fd2fe45d61d6a484935ff7a2482
|
|
7
|
+
data.tar.gz: 20576bb2c209513f5e169b7723bdbe445648ba0121ed36bae8a86a846b408a7a205b7f65f41a376ddcea0b44a163431a3a6e9aeef53a64fff94a848ec3a03114
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
use_cases (1.0
|
|
4
|
+
use_cases (1.1.0)
|
|
5
5
|
activesupport
|
|
6
6
|
dry-events
|
|
7
7
|
dry-matcher
|
|
@@ -110,6 +110,7 @@ GEM
|
|
|
110
110
|
|
|
111
111
|
PLATFORMS
|
|
112
112
|
x86_64-darwin-20
|
|
113
|
+
x86_64-darwin-21
|
|
113
114
|
x86_64-linux
|
|
114
115
|
|
|
115
116
|
DEPENDENCIES
|
|
@@ -126,4 +127,4 @@ DEPENDENCIES
|
|
|
126
127
|
use_cases!
|
|
127
128
|
|
|
128
129
|
BUNDLED WITH
|
|
129
|
-
2.2.
|
|
130
|
+
2.2.32
|
|
@@ -5,46 +5,18 @@ module UseCases
|
|
|
5
5
|
class Publisher
|
|
6
6
|
include Dry::Events::Publisher[:use_cases]
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def publish_async(event_name, payload)
|
|
16
|
-
UseCases::Events::PublishJob.perform_later(event_name, payload)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def event_should_be_published_asynchronously?(event_name)
|
|
20
|
-
defined? UseCases::Events::PublishJob && !event_name.end_with?(".async")
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def subscribe_to_event(event_name)
|
|
24
|
-
subscribers_for(event_name).each(&method(:subscribe))
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def subscribers_for(event_name)
|
|
28
|
-
available_subscribers.select do |subscriber|
|
|
29
|
-
subscriber.should_subscribe_to?(event_name) && !subscribed?(subscriber)
|
|
8
|
+
# This is a hack waiting for this https://github.com/dry-rb/dry-events/pull/15 to be merged
|
|
9
|
+
def subscribed?(listener)
|
|
10
|
+
__bus__.listeners.values.any? do |value|
|
|
11
|
+
value.any? do |block, _|
|
|
12
|
+
block.owner == listener.owner && block.name == listener.name
|
|
13
|
+
end
|
|
30
14
|
end
|
|
31
15
|
end
|
|
32
16
|
|
|
33
|
-
def
|
|
34
|
-
subcribers << listener
|
|
17
|
+
def publish(event_name, payload)
|
|
35
18
|
super
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def subscribed?(listener)
|
|
39
|
-
subcribers.include?(listener)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def subcribers
|
|
43
|
-
@subcribers ||= []
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def available_subscribers
|
|
47
|
-
UseCases.subscribers
|
|
19
|
+
PublishJob.perform_later(event_name, payload) if defined?(PublishJob)
|
|
48
20
|
end
|
|
49
21
|
end
|
|
50
22
|
end
|
|
@@ -13,27 +13,9 @@ module UseCases
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
module StepPatch
|
|
16
|
-
def initialize(*
|
|
16
|
+
def initialize(*)
|
|
17
17
|
super
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
register_events
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def register_events
|
|
24
|
-
event_names.each do |event_name|
|
|
25
|
-
next if UseCases.publisher.class.events[event_name]
|
|
26
|
-
|
|
27
|
-
UseCases.publisher.class.register_event(event_name)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def event_names
|
|
32
|
-
event_name = options[:publish]
|
|
33
|
-
[
|
|
34
|
-
"#{event_name}.success", "#{event_name}.failure",
|
|
35
|
-
"#{event_name}.success.async", "#{event_name}.failure.async"
|
|
36
|
-
]
|
|
18
|
+
finalize_subscriptions!
|
|
37
19
|
end
|
|
38
20
|
|
|
39
21
|
def call(*args)
|
|
@@ -48,7 +30,27 @@ module UseCases
|
|
|
48
30
|
key = extract_event_key(step_result)
|
|
49
31
|
payload = extract_payload(step_result, args)
|
|
50
32
|
|
|
51
|
-
UseCases.publisher.
|
|
33
|
+
UseCases.publisher.publish(key, payload)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def finalize_subscriptions!
|
|
38
|
+
event_ids.each do |event_id|
|
|
39
|
+
listener_name = ['on', event_id].join('_').gsub('.', '_')
|
|
40
|
+
UseCases.publisher.register_event(event_id)
|
|
41
|
+
|
|
42
|
+
UseCases.subscribers.each do |subscriber|
|
|
43
|
+
next if !subscriber.respond_to?(listener_name) || UseCases.publisher.subscribed?(subscriber.method(listener_name))
|
|
44
|
+
|
|
45
|
+
UseCases.publisher.subscribe(subscriber)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def event_ids
|
|
51
|
+
%w[success failure success.async failure.async].map do |event_type|
|
|
52
|
+
[options[:publish], event_type].join('.')
|
|
53
|
+
end
|
|
52
54
|
end
|
|
53
55
|
|
|
54
56
|
private
|
data/lib/use_cases/version.rb
CHANGED
data/use_cases.gemspec
CHANGED
|
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
|
|
|
36
36
|
spec.add_dependency "dry-monads"
|
|
37
37
|
spec.add_dependency "dry-validation"
|
|
38
38
|
|
|
39
|
+
spec.add_development_dependency "byebug"
|
|
39
40
|
spec.add_development_dependency "rake"
|
|
40
41
|
spec.add_development_dependency "rspec"
|
|
41
42
|
spec.add_development_dependency "rubocop"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: use_cases
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ring Twice
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-02-
|
|
11
|
+
date: 2022-02-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -80,6 +80,20 @@ dependencies:
|
|
|
80
80
|
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: byebug
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: rake
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|