active_event_store 1.0.1 → 1.0.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/CHANGELOG.md +5 -0
- data/README.md +3 -1
- data/lib/active_event_store/subscriber_job.rb +9 -5
- data/lib/active_event_store/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4ccb82314fce7aa4504e6834af793ad82e4613ef970a0277664de839e72a543
|
4
|
+
data.tar.gz: 38ea7210977f150226cf63f3cdec4793210e054e207cf71bcfcf5643cab21b28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26ff53ad69fe94b9643031511072ef1d3b89e17eebae6b492570ad56829afc03ccb39c1ae16b26e3da038a549e4ae63c95eab117e1f4f0781e1202b32d6662b1
|
7
|
+
data.tar.gz: bb66fa72aed216e1328dc7b52737a273de13da41dcdc723c6250e015c7aee5574523c9ed6de876ae0525599076326f6bb847c5115eb146801f8e177dc04b13b4
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 1.0.2 (2021-03-15)
|
6
|
+
|
7
|
+
- Support using classes with `#call` as async subscribers. ([@caws][])
|
8
|
+
|
5
9
|
## 1.0.1 (2021-09-16)
|
6
10
|
|
7
11
|
- Add minitest assertions: `assert_event_published`, `refute_event_published`, `assert_async_event_subscriber_enqueued` ([@chriscz][])
|
@@ -26,3 +30,4 @@ Now `ActiveSupport.on_load(:active_event_store) { ... }` works.
|
|
26
30
|
|
27
31
|
[@palkan]: https://github.com/palkan
|
28
32
|
[@chriscz]: https://github.com/chriscz
|
33
|
+
[@caws]: https://github.com/caws
|
data/README.md
CHANGED
@@ -140,12 +140,14 @@ ActiveSupport.on_load :active_event_store do |store|
|
|
140
140
|
end
|
141
141
|
```
|
142
142
|
|
143
|
-
Subscribers could be any callable Ruby objects that accept a single argument (event) as its input.
|
143
|
+
Subscribers could be any callable Ruby objects that accept a single argument (event) as its input or classes that inherit from `Class` and have `#call` as an instance method.
|
144
144
|
|
145
145
|
We suggest putting subscribers to the `app/subscribers` folder using the following convention: `app/subscribers/on_<event_type>/<subscriber.rb>`, e.g. `app/subscribers/on_profile_created/create_chat_user.rb`.
|
146
146
|
|
147
147
|
**NOTE:** Active Job must be loaded to use async subscribers (i.e., `require "active_job/railtie"` or `require "rails/all"` in your `config/application.rb`).
|
148
148
|
|
149
|
+
**NOTE:** Subscribers that inherit from `Class` and implement `call` as a class method will not be instantiated.
|
150
|
+
|
149
151
|
### Testing
|
150
152
|
|
151
153
|
You can test subscribers as normal Ruby objects.
|
@@ -14,11 +14,11 @@ module ActiveEventStore
|
|
14
14
|
|
15
15
|
raise ArgumentError, "Async subscriber must be a module/class, not instance" unless callable.is_a?(Module)
|
16
16
|
|
17
|
-
if callable.const_defined?(
|
18
|
-
callable.const_get(
|
17
|
+
if callable.const_defined?(:SubscriberJob, false)
|
18
|
+
callable.const_get(:SubscriberJob, false)
|
19
19
|
else
|
20
20
|
callable.const_set(
|
21
|
-
|
21
|
+
:SubscriberJob,
|
22
22
|
Class.new(self).tap do |job|
|
23
23
|
queue_as ActiveEventStore.config.job_queue_name
|
24
24
|
|
@@ -31,8 +31,8 @@ module ActiveEventStore
|
|
31
31
|
def for(callable)
|
32
32
|
raise ArgumentError, "Async subscriber must be a module/class" unless callable.is_a?(Module)
|
33
33
|
|
34
|
-
callable.const_defined?(
|
35
|
-
callable.const_get(
|
34
|
+
callable.const_defined?(:SubscriberJob, false) ?
|
35
|
+
callable.const_get(:SubscriberJob, false) :
|
36
36
|
nil
|
37
37
|
end
|
38
38
|
end
|
@@ -48,6 +48,10 @@ module ActiveEventStore
|
|
48
48
|
private
|
49
49
|
|
50
50
|
def subscriber
|
51
|
+
if self.class.subscriber.is_a?(Class) && !self.class.subscriber.respond_to?(:call)
|
52
|
+
return self.class.subscriber.new
|
53
|
+
end
|
54
|
+
|
51
55
|
self.class.subscriber
|
52
56
|
end
|
53
57
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Dementyev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails_event_store
|
@@ -142,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
142
|
- !ruby/object:Gem::Version
|
143
143
|
version: '0'
|
144
144
|
requirements: []
|
145
|
-
rubygems_version: 3.2.
|
145
|
+
rubygems_version: 3.2.22
|
146
146
|
signing_key:
|
147
147
|
specification_version: 4
|
148
148
|
summary: Rails Event Store in a more Rails way
|