rails_event_store 0.30.0 → 0.31.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 +1 -0
- data/lib/rails_event_store/active_job_dispatcher.rb +9 -61
- data/lib/rails_event_store/all.rb +21 -15
- data/lib/rails_event_store/async_handler_helpers.rb +20 -0
- data/lib/rails_event_store/async_proxy_strategy.rb +39 -0
- data/lib/rails_event_store/client.rb +4 -2
- data/lib/rails_event_store/link_by_metadata.rb +27 -0
- data/lib/rails_event_store/version.rb +1 -1
- data/rails_event_store.gemspec +5 -4
- metadata +27 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b76f46be4f7d613e250ca140d1da214c785132518e52cd0001e9282aaa3f037d
|
4
|
+
data.tar.gz: 2b44dd20664323a79d47b57ede062ba202f674ea4196ce15e5d51f4f4cae6cb0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 726f8eed5f15a7697e6c628b0e2a051f9d76497d7488700a4178a65cc712c97ad124c3beb838bca3b58aab7365d9a6658fe8b49162d4b03526d1be4fbc5d49fb
|
7
|
+
data.tar.gz: f8214c5acfc208ad8d840c558a44d59ac41296099b9ca513d05db68d5ab87f4c4be6e26bb39ba27202b7881aa0610f69be97bfd7d90cd994812fdb41a6da35c3
|
data/Gemfile
CHANGED
@@ -6,6 +6,7 @@ gem 'rails_event_store_active_record', path: '../rails_event_store_active_record
|
|
6
6
|
gem 'aggregate_root', path: '../aggregate_root'
|
7
7
|
gem 'bounded_context', path: '../bounded_context'
|
8
8
|
gem 'protobuf_nested_struct'
|
9
|
+
gem 'sidekiq'
|
9
10
|
|
10
11
|
if v = ENV['RAILS_VERSION']
|
11
12
|
gem 'rails', v
|
@@ -1,71 +1,19 @@
|
|
1
1
|
require 'active_job'
|
2
2
|
|
3
3
|
module RailsEventStore
|
4
|
-
|
5
|
-
class AfterCommit
|
6
|
-
def call(klass, event)
|
7
|
-
if ActiveRecord::Base.connection.transaction_open?
|
8
|
-
ActiveRecord::Base.
|
9
|
-
connection.
|
10
|
-
current_transaction.
|
11
|
-
add_record(AsyncRecord.new(klass, event))
|
12
|
-
else
|
13
|
-
klass.perform_later(YAML.dump(event))
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
class AsyncRecord
|
19
|
-
def initialize(klass, event)
|
20
|
-
@klass = klass
|
21
|
-
@event = event
|
22
|
-
end
|
23
|
-
|
24
|
-
def committed!
|
25
|
-
@klass.perform_later(YAML.dump(@event))
|
26
|
-
end
|
27
|
-
|
28
|
-
def rolledback!(*)
|
29
|
-
end
|
30
|
-
|
31
|
-
def before_committed!
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_to_transaction
|
35
|
-
AfterCommit.new.call(@klass, @event)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
class Inline
|
41
|
-
def call(klass, event)
|
42
|
-
klass.perform_later(YAML.dump(event))
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
class ActiveJobDispatcher < RubyEventStore::PubSub::Dispatcher
|
4
|
+
class ActiveJobDispatcher < RubyEventStore::AsyncDispatcher
|
48
5
|
def initialize(proxy_strategy: AsyncProxyStrategy::Inline.new)
|
49
|
-
|
6
|
+
super(proxy_strategy: proxy_strategy, scheduler: ActiveJobScheduler.new)
|
50
7
|
end
|
51
8
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
else
|
56
|
-
super
|
9
|
+
class ActiveJobScheduler
|
10
|
+
def call(klass, serialized_event)
|
11
|
+
klass.perform_later(serialized_event.to_h)
|
57
12
|
end
|
58
|
-
end
|
59
13
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
private
|
65
|
-
|
66
|
-
def async_handler?(klass)
|
67
|
-
Class === klass && klass < ActiveJob::Base
|
14
|
+
def async_handler?(klass)
|
15
|
+
Class === klass && klass < ActiveJob::Base
|
16
|
+
end
|
68
17
|
end
|
69
|
-
|
70
18
|
end
|
71
|
-
end
|
19
|
+
end
|
@@ -1,23 +1,29 @@
|
|
1
1
|
require 'ruby_event_store'
|
2
|
+
require 'rails_event_store/async_proxy_strategy'
|
2
3
|
require 'rails_event_store/active_job_dispatcher'
|
4
|
+
require 'rails_event_store/async_handler_helpers'
|
5
|
+
require 'rails_event_store/link_by_metadata'
|
3
6
|
require 'rails_event_store/client'
|
4
7
|
require 'rails_event_store/version'
|
5
8
|
require 'rails_event_store/railtie'
|
6
9
|
require 'rails_event_store/deprecations'
|
7
10
|
|
8
11
|
module RailsEventStore
|
9
|
-
Event
|
10
|
-
InMemoryRepository
|
11
|
-
|
12
|
-
Projection
|
13
|
-
WrongExpectedEventVersion
|
14
|
-
InvalidExpectedVersion
|
15
|
-
IncorrectStreamData
|
16
|
-
EventNotFound
|
17
|
-
SubscriberNotExist
|
18
|
-
InvalidHandler
|
19
|
-
InvalidPageStart
|
20
|
-
InvalidPageSize
|
21
|
-
|
22
|
-
|
23
|
-
|
12
|
+
Event = RubyEventStore::Event
|
13
|
+
InMemoryRepository = RubyEventStore::InMemoryRepository
|
14
|
+
Subscriptions = RubyEventStore::PubSub::Subscriptions
|
15
|
+
Projection = RubyEventStore::Projection
|
16
|
+
WrongExpectedEventVersion = RubyEventStore::WrongExpectedEventVersion
|
17
|
+
InvalidExpectedVersion = RubyEventStore::InvalidExpectedVersion
|
18
|
+
IncorrectStreamData = RubyEventStore::IncorrectStreamData
|
19
|
+
EventNotFound = RubyEventStore::EventNotFound
|
20
|
+
SubscriberNotExist = RubyEventStore::SubscriberNotExist
|
21
|
+
InvalidHandler = RubyEventStore::InvalidHandler
|
22
|
+
InvalidPageStart = RubyEventStore::InvalidPageStart
|
23
|
+
InvalidPageSize = RubyEventStore::InvalidPageSize
|
24
|
+
CorrelatedCommands = RubyEventStore::CorrelatedCommands
|
25
|
+
GLOBAL_STREAM = RubyEventStore::GLOBAL_STREAM
|
26
|
+
PAGE_SIZE = RubyEventStore::PAGE_SIZE
|
27
|
+
AsyncProxyStrategy::Inline = RubyEventStore::AsyncProxyStrategy::Inline
|
28
|
+
AsyncDispatcher = RubyEventStore::AsyncDispatcher
|
29
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module RailsEventStore
|
2
|
+
|
3
|
+
module AsyncHandler
|
4
|
+
def perform(payload)
|
5
|
+
super(Rails.configuration.event_store.deserialize(payload))
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module CorrelatedHandler
|
10
|
+
def perform(event)
|
11
|
+
Rails.configuration.event_store.with_metadata(
|
12
|
+
correlation_id: event.metadata[:correlation_id] || event.event_id,
|
13
|
+
causation_id: event.event_id
|
14
|
+
) do
|
15
|
+
super
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module RailsEventStore
|
2
|
+
module AsyncProxyStrategy
|
3
|
+
class AfterCommit
|
4
|
+
def call(schedule_proc)
|
5
|
+
if ActiveRecord::Base.connection.transaction_open?
|
6
|
+
ActiveRecord::Base.
|
7
|
+
connection.
|
8
|
+
current_transaction.
|
9
|
+
add_record(AsyncRecord.new(schedule_proc))
|
10
|
+
else
|
11
|
+
schedule_proc.call
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
class AsyncRecord
|
17
|
+
def initialize(schedule_proc)
|
18
|
+
@schedule_proc = schedule_proc
|
19
|
+
end
|
20
|
+
|
21
|
+
def committed!
|
22
|
+
schedule_proc.call
|
23
|
+
end
|
24
|
+
|
25
|
+
def rolledback!(*)
|
26
|
+
end
|
27
|
+
|
28
|
+
def before_committed!
|
29
|
+
end
|
30
|
+
|
31
|
+
def add_to_transaction
|
32
|
+
AfterCommit.new.call(schedule_proc)
|
33
|
+
end
|
34
|
+
|
35
|
+
attr_reader :schedule_proc
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -4,12 +4,14 @@ module RailsEventStore
|
|
4
4
|
|
5
5
|
def initialize(repository: RailsEventStoreActiveRecord::EventRepository.new,
|
6
6
|
mapper: RubyEventStore::Mappers::Default.new,
|
7
|
-
|
7
|
+
subscriptions: RubyEventStore::PubSub::Subscriptions.new,
|
8
|
+
dispatcher: ActiveJobDispatcher.new,
|
8
9
|
request_metadata: default_request_metadata,
|
9
10
|
page_size: PAGE_SIZE)
|
10
11
|
super(repository: repository,
|
11
12
|
mapper: mapper,
|
12
|
-
|
13
|
+
subscriptions: subscriptions,
|
14
|
+
dispatcher: dispatcher,
|
13
15
|
page_size: page_size)
|
14
16
|
@request_metadata = request_metadata
|
15
17
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module RailsEventStore
|
2
|
+
|
3
|
+
class LinkByMetadata < RubyEventStore::LinkByMetadata
|
4
|
+
def initialize(event_store: Rails.configuration.event_store, key:, prefix: nil)
|
5
|
+
super(event_store: event_store, key: key, prefix: prefix)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class LinkByCorrelationId < RubyEventStore::LinkByCorrelationId
|
10
|
+
def initialize(event_store: Rails.configuration.event_store, prefix: nil)
|
11
|
+
super(event_store: event_store, prefix: prefix)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class LinkByCausationId < RubyEventStore::LinkByCausationId
|
16
|
+
def initialize(event_store: Rails.configuration.event_store, prefix: nil)
|
17
|
+
super(event_store: event_store, prefix: prefix)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class LinkByEventType < RubyEventStore::LinkByEventType
|
22
|
+
def initialize(event_store: Rails.configuration.event_store, prefix: nil)
|
23
|
+
super(event_store: event_store, prefix: prefix)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/rails_event_store.gemspec
CHANGED
@@ -33,11 +33,12 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency 'rack-test'
|
34
34
|
spec.add_development_dependency 'mutant-rspec', '~> 0.8.14'
|
35
35
|
spec.add_development_dependency 'google-protobuf', '~> 3.5.1.2'
|
36
|
+
spec.add_development_dependency 'pry'
|
36
37
|
|
37
|
-
spec.add_dependency 'ruby_event_store', '= 0.
|
38
|
-
spec.add_dependency 'rails_event_store_active_record', '= 0.
|
39
|
-
spec.add_dependency 'aggregate_root', '= 0.
|
40
|
-
spec.add_dependency 'bounded_context', '= 0.
|
38
|
+
spec.add_dependency 'ruby_event_store', '= 0.31.0'
|
39
|
+
spec.add_dependency 'rails_event_store_active_record', '= 0.31.0'
|
40
|
+
spec.add_dependency 'aggregate_root', '= 0.31.0'
|
41
|
+
spec.add_dependency 'bounded_context', '= 0.31.0'
|
41
42
|
spec.add_dependency 'activesupport', '>= 3.0'
|
42
43
|
spec.add_dependency 'activemodel', '>= 3.0'
|
43
44
|
spec.add_dependency 'activejob', '>= 3.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.31.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arkency
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -122,62 +122,76 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 3.5.1.2
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pry
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: ruby_event_store
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - '='
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
145
|
+
version: 0.31.0
|
132
146
|
type: :runtime
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - '='
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
152
|
+
version: 0.31.0
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: rails_event_store_active_record
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
157
|
- - '='
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.
|
159
|
+
version: 0.31.0
|
146
160
|
type: :runtime
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - '='
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.
|
166
|
+
version: 0.31.0
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: aggregate_root
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - '='
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
173
|
+
version: 0.31.0
|
160
174
|
type: :runtime
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
178
|
- - '='
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
180
|
+
version: 0.31.0
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: bounded_context
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
185
|
- - '='
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
187
|
+
version: 0.31.0
|
174
188
|
type: :runtime
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - '='
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.
|
194
|
+
version: 0.31.0
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: activesupport
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,8 +262,11 @@ files:
|
|
248
262
|
- lib/rails_event_store.rb
|
249
263
|
- lib/rails_event_store/active_job_dispatcher.rb
|
250
264
|
- lib/rails_event_store/all.rb
|
265
|
+
- lib/rails_event_store/async_handler_helpers.rb
|
266
|
+
- lib/rails_event_store/async_proxy_strategy.rb
|
251
267
|
- lib/rails_event_store/client.rb
|
252
268
|
- lib/rails_event_store/deprecations.rb
|
269
|
+
- lib/rails_event_store/link_by_metadata.rb
|
253
270
|
- lib/rails_event_store/middleware.rb
|
254
271
|
- lib/rails_event_store/railtie.rb
|
255
272
|
- lib/rails_event_store/version.rb
|