rails_event_store 0.30.0 → 1.3.1
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 +16 -5
- data/Makefile +11 -46
- data/lib/rails_event_store/active_job_scheduler.rb +15 -0
- data/lib/rails_event_store/after_commit_async_dispatcher.rb +59 -0
- data/lib/rails_event_store/all.rb +25 -17
- data/lib/rails_event_store/async_handler_helpers.rb +20 -0
- data/lib/rails_event_store/browser.rb +7 -0
- data/lib/rails_event_store/client.rb +12 -7
- data/lib/rails_event_store/link_by_metadata.rb +29 -0
- data/lib/rails_event_store/middleware.rb +2 -0
- data/lib/rails_event_store/railtie.rb +2 -0
- data/lib/rails_event_store/version.rb +3 -1
- data/lib/rails_event_store.rb +2 -0
- data/rails_event_store.gemspec +5 -13
- metadata +26 -123
- data/lib/rails_event_store/active_job_dispatcher.rb +0 -71
- data/lib/rails_event_store/deprecations.rb +0 -7
- data/tmp/.keep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16d83cb5cb45f3e9eb9597ac6af7ad8159afb6c893f119885ce5176252e935b1
|
4
|
+
data.tar.gz: 624d2e6e2398b960513e0e3391ced52a05a9334e23395adacb74906c3fec6461
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2a91f244de5f5afba31f60a2cf347eb42924afab65f73fc2651247661d3f5467716396ffac0e882e7fc2429ddce3f8ce7e428927fd0270d3999953f7a0aee93
|
7
|
+
data.tar.gz: 14ec0811e1270e03a91bfcfd0fbe48422190a88d5bf78b91ab23f5d75ba4ba031b69e9f6976c30bdf3ad87e7581842c0ed680b0060e9bcc6cec5240a9ce3d211
|
data/Gemfile
CHANGED
@@ -1,12 +1,23 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
2
3
|
gemspec
|
3
4
|
|
4
|
-
|
5
|
+
eval_gemfile File.expand_path('../support/bundler/Gemfile.shared', __dir__)
|
6
|
+
|
7
|
+
gem 'ruby_event_store', path: '../ruby_event_store'
|
8
|
+
gem 'ruby_event_store-browser', path: '../ruby_event_store-browser'
|
5
9
|
gem 'rails_event_store_active_record', path: '../rails_event_store_active_record'
|
6
|
-
gem 'aggregate_root',
|
7
|
-
gem 'bounded_context',
|
10
|
+
gem 'aggregate_root', path: '../aggregate_root'
|
11
|
+
gem 'bounded_context', path: '../bounded_context'
|
8
12
|
gem 'protobuf_nested_struct'
|
13
|
+
gem 'sidekiq'
|
14
|
+
gem 'rack-test'
|
15
|
+
gem 'google-protobuf', '~> 3.12.2', '>= 3.12.2'
|
16
|
+
gem 'pry'
|
17
|
+
gem 'rails', ENV['RAILS_VERSION']
|
9
18
|
|
10
|
-
if
|
11
|
-
gem '
|
19
|
+
if Gem::Version.new(ENV['RAILS_VERSION']) >= Gem::Version.new('6.0.0')
|
20
|
+
gem 'sqlite3', '1.4.2'
|
21
|
+
else
|
22
|
+
gem 'sqlite3', '1.3.13'
|
12
23
|
end
|
data/Makefile
CHANGED
@@ -1,49 +1,14 @@
|
|
1
1
|
GEM_VERSION = $(shell cat ../RES_VERSION)
|
2
2
|
GEM_NAME = rails_event_store
|
3
3
|
REQUIRE = $(GEM_NAME)
|
4
|
-
IGNORE = RailsEventStore
|
5
|
-
RailsEventStore::
|
6
|
-
RailsEventStore::
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
install
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
@echo "Removing resolved dependency versions"
|
16
|
-
-rm Gemfile.lock
|
17
|
-
|
18
|
-
reinstall: remove-lock install ## Removing resolved dependency versions
|
19
|
-
|
20
|
-
test: ## Run unit tests
|
21
|
-
@echo "Running unit tests"
|
22
|
-
@bundle exec rspec
|
23
|
-
|
24
|
-
mutate: test ## Run mutation tests
|
25
|
-
@echo "Running mutation tests"
|
26
|
-
@bundle exec mutant --include lib \
|
27
|
-
$(addprefix --require ,$(REQUIRE)) \
|
28
|
-
$(addprefix --ignore-subject ,$(IGNORE)) \
|
29
|
-
--use rspec "$(SUBJECT)"
|
30
|
-
|
31
|
-
build:
|
32
|
-
@echo "Building gem package"
|
33
|
-
@gem build -V $(GEM_NAME).gemspec
|
34
|
-
@mkdir -p pkg/
|
35
|
-
@mv $(GEM_NAME)-$(GEM_VERSION).gem pkg/
|
36
|
-
|
37
|
-
push:
|
38
|
-
@echo "Pushing package to RubyGems"
|
39
|
-
@gem push -k dev_arkency pkg/$(GEM_NAME)-$(GEM_VERSION).gem
|
40
|
-
|
41
|
-
clean:
|
42
|
-
@echo "Removing previously built package"
|
43
|
-
-rm pkg/$(GEM_NAME)-$(GEM_VERSION).gem
|
44
|
-
|
45
|
-
help:
|
46
|
-
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
47
|
-
|
48
|
-
.PHONY: help
|
49
|
-
.DEFAULT_GOAL := help
|
4
|
+
IGNORE = RailsEventStore::Client\#initialize \
|
5
|
+
RailsEventStore::AfterCommitAsyncDispatcher::AsyncRecord* \
|
6
|
+
RailsEventStore::AfterCommitAsyncDispatcher\#async_record
|
7
|
+
SUBJECT ?= RailsEventStore*
|
8
|
+
DATABASE_URL ?= sqlite3::memory:
|
9
|
+
|
10
|
+
include ../support/make/install.mk
|
11
|
+
include ../support/make/test.mk
|
12
|
+
include ../support/make/mutant.mk
|
13
|
+
include ../support/make/gem.mk
|
14
|
+
include ../support/make/help.mk
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_job'
|
4
|
+
|
5
|
+
module RailsEventStore
|
6
|
+
class ActiveJobScheduler
|
7
|
+
def call(klass, serialized_event)
|
8
|
+
klass.perform_later(serialized_event.to_h)
|
9
|
+
end
|
10
|
+
|
11
|
+
def verify(subscriber)
|
12
|
+
Class === subscriber && !!(subscriber < ActiveJob::Base)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsEventStore
|
4
|
+
class AfterCommitAsyncDispatcher
|
5
|
+
def initialize(scheduler:)
|
6
|
+
@scheduler = scheduler
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(subscriber, _, serialized_event)
|
10
|
+
run do
|
11
|
+
@scheduler.call(subscriber, serialized_event)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def run(&schedule_proc)
|
16
|
+
transaction = ActiveRecord::Base.connection.current_transaction
|
17
|
+
|
18
|
+
if transaction.joinable?
|
19
|
+
transaction.add_record(async_record(schedule_proc))
|
20
|
+
else
|
21
|
+
yield
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def async_record(schedule_proc)
|
26
|
+
AsyncRecord.new(self, schedule_proc)
|
27
|
+
end
|
28
|
+
|
29
|
+
def verify(subscriber)
|
30
|
+
@scheduler.verify(subscriber)
|
31
|
+
end
|
32
|
+
|
33
|
+
class AsyncRecord
|
34
|
+
def initialize(dispatcher, schedule_proc)
|
35
|
+
@dispatcher = dispatcher
|
36
|
+
@schedule_proc = schedule_proc
|
37
|
+
end
|
38
|
+
|
39
|
+
def committed!(*)
|
40
|
+
schedule_proc.call
|
41
|
+
end
|
42
|
+
|
43
|
+
def rolledback!(*)
|
44
|
+
end
|
45
|
+
|
46
|
+
def before_committed!
|
47
|
+
end
|
48
|
+
|
49
|
+
def add_to_transaction
|
50
|
+
dispatcher.run(&schedule_proc)
|
51
|
+
end
|
52
|
+
|
53
|
+
def trigger_transactional_callbacks?
|
54
|
+
end
|
55
|
+
|
56
|
+
attr_reader :schedule_proc, :dispatcher
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -1,23 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'ruby_event_store'
|
2
|
-
require 'rails_event_store/
|
4
|
+
require 'rails_event_store/async_handler_helpers'
|
5
|
+
require 'rails_event_store/link_by_metadata'
|
6
|
+
require 'rails_event_store/after_commit_async_dispatcher'
|
7
|
+
require 'rails_event_store/active_job_scheduler'
|
3
8
|
require 'rails_event_store/client'
|
4
9
|
require 'rails_event_store/version'
|
5
10
|
require 'rails_event_store/railtie'
|
6
|
-
require 'rails_event_store/
|
11
|
+
require 'rails_event_store/browser'
|
7
12
|
|
8
13
|
module RailsEventStore
|
9
|
-
Event
|
10
|
-
InMemoryRepository
|
11
|
-
|
12
|
-
Projection
|
13
|
-
WrongExpectedEventVersion
|
14
|
-
InvalidExpectedVersion
|
15
|
-
IncorrectStreamData
|
16
|
-
EventNotFound
|
17
|
-
SubscriberNotExist
|
18
|
-
InvalidHandler
|
19
|
-
InvalidPageStart
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
14
|
+
Event = RubyEventStore::Event
|
15
|
+
InMemoryRepository = RubyEventStore::InMemoryRepository
|
16
|
+
Subscriptions = RubyEventStore::Subscriptions
|
17
|
+
Projection = RubyEventStore::Projection
|
18
|
+
WrongExpectedEventVersion = RubyEventStore::WrongExpectedEventVersion
|
19
|
+
InvalidExpectedVersion = RubyEventStore::InvalidExpectedVersion
|
20
|
+
IncorrectStreamData = RubyEventStore::IncorrectStreamData
|
21
|
+
EventNotFound = RubyEventStore::EventNotFound
|
22
|
+
SubscriberNotExist = RubyEventStore::SubscriberNotExist
|
23
|
+
InvalidHandler = RubyEventStore::InvalidHandler
|
24
|
+
InvalidPageStart = RubyEventStore::InvalidPageStart
|
25
|
+
InvalidPageStop = RubyEventStore::InvalidPageStop
|
26
|
+
InvalidPageSize = RubyEventStore::InvalidPageSize
|
27
|
+
CorrelatedCommands = RubyEventStore::CorrelatedCommands
|
28
|
+
GLOBAL_STREAM = RubyEventStore::GLOBAL_STREAM
|
29
|
+
PAGE_SIZE = RubyEventStore::PAGE_SIZE
|
30
|
+
ImmediateAsyncDispatcher = RubyEventStore::ImmediateAsyncDispatcher
|
31
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsEventStore
|
4
|
+
module AsyncHandler
|
5
|
+
def perform(payload)
|
6
|
+
super(Rails.configuration.event_store.deserialize(**payload.symbolize_keys))
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module CorrelatedHandler
|
11
|
+
def perform(event)
|
12
|
+
Rails.configuration.event_store.with_metadata(
|
13
|
+
correlation_id: event.metadata[:correlation_id],
|
14
|
+
causation_id: event.event_id
|
15
|
+
) do
|
16
|
+
super
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,16 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsEventStore
|
2
4
|
class Client < RubyEventStore::Client
|
3
5
|
attr_reader :request_metadata
|
4
6
|
|
5
7
|
def initialize(repository: RailsEventStoreActiveRecord::EventRepository.new,
|
6
8
|
mapper: RubyEventStore::Mappers::Default.new,
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
subscriptions: RubyEventStore::Subscriptions.new,
|
10
|
+
dispatcher: RubyEventStore::ComposedDispatcher.new(
|
11
|
+
RubyEventStore::ImmediateAsyncDispatcher.new(scheduler: ActiveJobScheduler.new),
|
12
|
+
RubyEventStore::Dispatcher.new),
|
13
|
+
request_metadata: default_request_metadata)
|
14
|
+
super(repository: RubyEventStore::InstrumentedRepository.new(repository, ActiveSupport::Notifications),
|
15
|
+
mapper: RubyEventStore::Mappers::InstrumentedMapper.new(mapper, ActiveSupport::Notifications),
|
16
|
+
subscriptions: subscriptions,
|
17
|
+
dispatcher: RubyEventStore::InstrumentedDispatcher.new(dispatcher, ActiveSupport::Notifications)
|
18
|
+
)
|
14
19
|
@request_metadata = request_metadata
|
15
20
|
end
|
16
21
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsEventStore
|
4
|
+
|
5
|
+
class LinkByMetadata < RubyEventStore::LinkByMetadata
|
6
|
+
def initialize(event_store: Rails.configuration.event_store, key:, prefix: nil)
|
7
|
+
super
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class LinkByCorrelationId < RubyEventStore::LinkByCorrelationId
|
12
|
+
def initialize(event_store: Rails.configuration.event_store, prefix: nil)
|
13
|
+
super
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class LinkByCausationId < RubyEventStore::LinkByCausationId
|
18
|
+
def initialize(event_store: Rails.configuration.event_store, prefix: nil)
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class LinkByEventType < RubyEventStore::LinkByEventType
|
24
|
+
def initialize(event_store: Rails.configuration.event_store, prefix: nil)
|
25
|
+
super
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/lib/rails_event_store.rb
CHANGED
data/rails_event_store.gemspec
CHANGED
@@ -25,19 +25,11 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
26
|
spec.require_paths = ['lib']
|
27
27
|
|
28
|
-
spec.
|
29
|
-
spec.
|
30
|
-
spec.
|
31
|
-
spec.
|
32
|
-
spec.
|
33
|
-
spec.add_development_dependency 'rack-test'
|
34
|
-
spec.add_development_dependency 'mutant-rspec', '~> 0.8.14'
|
35
|
-
spec.add_development_dependency 'google-protobuf', '~> 3.5.1.2'
|
36
|
-
|
37
|
-
spec.add_dependency 'ruby_event_store', '= 0.30.0'
|
38
|
-
spec.add_dependency 'rails_event_store_active_record', '= 0.30.0'
|
39
|
-
spec.add_dependency 'aggregate_root', '= 0.30.0'
|
40
|
-
spec.add_dependency 'bounded_context', '= 0.30.0'
|
28
|
+
spec.add_dependency 'ruby_event_store', '= 1.3.1'
|
29
|
+
spec.add_dependency 'ruby_event_store-browser', '= 1.3.1'
|
30
|
+
spec.add_dependency 'rails_event_store_active_record', '= 1.3.1'
|
31
|
+
spec.add_dependency 'aggregate_root', '= 1.3.1'
|
32
|
+
spec.add_dependency 'bounded_context', '= 1.3.1'
|
41
33
|
spec.add_dependency 'activesupport', '>= 3.0'
|
42
34
|
spec.add_dependency 'activemodel', '>= 3.0'
|
43
35
|
spec.add_dependency 'activejob', '>= 3.0'
|
metadata
CHANGED
@@ -1,183 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arkency
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.15'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.15'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.6'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '3.6'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rails
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '5.2'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '5.2'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: sqlite3
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rack-test
|
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'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: mutant-rspec
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.8.14
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.8.14
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: google-protobuf
|
14
|
+
name: ruby_event_store
|
113
15
|
requirement: !ruby/object:Gem::Requirement
|
114
16
|
requirements:
|
115
|
-
- -
|
17
|
+
- - '='
|
116
18
|
- !ruby/object:Gem::Version
|
117
|
-
version: 3.
|
118
|
-
type: :
|
19
|
+
version: 1.3.1
|
20
|
+
type: :runtime
|
119
21
|
prerelease: false
|
120
22
|
version_requirements: !ruby/object:Gem::Requirement
|
121
23
|
requirements:
|
122
|
-
- -
|
24
|
+
- - '='
|
123
25
|
- !ruby/object:Gem::Version
|
124
|
-
version: 3.
|
26
|
+
version: 1.3.1
|
125
27
|
- !ruby/object:Gem::Dependency
|
126
|
-
name: ruby_event_store
|
28
|
+
name: ruby_event_store-browser
|
127
29
|
requirement: !ruby/object:Gem::Requirement
|
128
30
|
requirements:
|
129
31
|
- - '='
|
130
32
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
33
|
+
version: 1.3.1
|
132
34
|
type: :runtime
|
133
35
|
prerelease: false
|
134
36
|
version_requirements: !ruby/object:Gem::Requirement
|
135
37
|
requirements:
|
136
38
|
- - '='
|
137
39
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
40
|
+
version: 1.3.1
|
139
41
|
- !ruby/object:Gem::Dependency
|
140
42
|
name: rails_event_store_active_record
|
141
43
|
requirement: !ruby/object:Gem::Requirement
|
142
44
|
requirements:
|
143
45
|
- - '='
|
144
46
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
47
|
+
version: 1.3.1
|
146
48
|
type: :runtime
|
147
49
|
prerelease: false
|
148
50
|
version_requirements: !ruby/object:Gem::Requirement
|
149
51
|
requirements:
|
150
52
|
- - '='
|
151
53
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
54
|
+
version: 1.3.1
|
153
55
|
- !ruby/object:Gem::Dependency
|
154
56
|
name: aggregate_root
|
155
57
|
requirement: !ruby/object:Gem::Requirement
|
156
58
|
requirements:
|
157
59
|
- - '='
|
158
60
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
61
|
+
version: 1.3.1
|
160
62
|
type: :runtime
|
161
63
|
prerelease: false
|
162
64
|
version_requirements: !ruby/object:Gem::Requirement
|
163
65
|
requirements:
|
164
66
|
- - '='
|
165
67
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
68
|
+
version: 1.3.1
|
167
69
|
- !ruby/object:Gem::Dependency
|
168
70
|
name: bounded_context
|
169
71
|
requirement: !ruby/object:Gem::Requirement
|
170
72
|
requirements:
|
171
73
|
- - '='
|
172
74
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
75
|
+
version: 1.3.1
|
174
76
|
type: :runtime
|
175
77
|
prerelease: false
|
176
78
|
version_requirements: !ruby/object:Gem::Requirement
|
177
79
|
requirements:
|
178
80
|
- - '='
|
179
81
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
82
|
+
version: 1.3.1
|
181
83
|
- !ruby/object:Gem::Dependency
|
182
84
|
name: activesupport
|
183
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -246,15 +148,17 @@ files:
|
|
246
148
|
- Makefile
|
247
149
|
- README.md
|
248
150
|
- lib/rails_event_store.rb
|
249
|
-
- lib/rails_event_store/
|
151
|
+
- lib/rails_event_store/active_job_scheduler.rb
|
152
|
+
- lib/rails_event_store/after_commit_async_dispatcher.rb
|
250
153
|
- lib/rails_event_store/all.rb
|
154
|
+
- lib/rails_event_store/async_handler_helpers.rb
|
155
|
+
- lib/rails_event_store/browser.rb
|
251
156
|
- lib/rails_event_store/client.rb
|
252
|
-
- lib/rails_event_store/
|
157
|
+
- lib/rails_event_store/link_by_metadata.rb
|
253
158
|
- lib/rails_event_store/middleware.rb
|
254
159
|
- lib/rails_event_store/railtie.rb
|
255
160
|
- lib/rails_event_store/version.rb
|
256
161
|
- rails_event_store.gemspec
|
257
|
-
- tmp/.keep
|
258
162
|
homepage: https://railseventstore.org
|
259
163
|
licenses:
|
260
164
|
- MIT
|
@@ -263,7 +167,7 @@ metadata:
|
|
263
167
|
changelog_uri: https://github.com/RailsEventStore/rails_event_store/releases
|
264
168
|
source_code_uri: https://github.com/RailsEventStore/rails_event_store
|
265
169
|
bug_tracker_uri: https://github.com/RailsEventStore/rails_event_store/issues
|
266
|
-
post_install_message:
|
170
|
+
post_install_message:
|
267
171
|
rdoc_options: []
|
268
172
|
require_paths:
|
269
173
|
- lib
|
@@ -278,9 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
278
182
|
- !ruby/object:Gem::Version
|
279
183
|
version: '0'
|
280
184
|
requirements: []
|
281
|
-
|
282
|
-
|
283
|
-
signing_key:
|
185
|
+
rubygems_version: 3.1.4
|
186
|
+
signing_key:
|
284
187
|
specification_version: 4
|
285
188
|
summary: Event Store in Ruby
|
286
189
|
test_files: []
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'active_job'
|
2
|
-
|
3
|
-
module RailsEventStore
|
4
|
-
module AsyncProxyStrategy
|
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
|
48
|
-
def initialize(proxy_strategy: AsyncProxyStrategy::Inline.new)
|
49
|
-
@async_proxy_strategy = proxy_strategy
|
50
|
-
end
|
51
|
-
|
52
|
-
def call(subscriber, event)
|
53
|
-
if async_handler?(subscriber)
|
54
|
-
@async_proxy_strategy.call(subscriber, event)
|
55
|
-
else
|
56
|
-
super
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def verify(subscriber)
|
61
|
-
super unless async_handler?(subscriber)
|
62
|
-
end
|
63
|
-
|
64
|
-
private
|
65
|
-
|
66
|
-
def async_handler?(klass)
|
67
|
-
Class === klass && klass < ActiveJob::Base
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
end
|
data/tmp/.keep
DELETED
File without changes
|