rails_event_store 0.30.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3d4e0009af4124fcd60998861a6a397048887b9e5b3ea57dcf5356b2fd3c2c0
4
- data.tar.gz: f62347ca2d8bf35e365647b09720c6410cb0096b1c512f11176c77f09cc7a808
3
+ metadata.gz: 16d83cb5cb45f3e9eb9597ac6af7ad8159afb6c893f119885ce5176252e935b1
4
+ data.tar.gz: 624d2e6e2398b960513e0e3391ced52a05a9334e23395adacb74906c3fec6461
5
5
  SHA512:
6
- metadata.gz: 59fd5ddb62bf2fb5e4db8c28771a1888b63bb6b2bbf3e16b0fc703d50a6e2956e65218eb0d6eb5fd3df417b8d49dc0c04a8eb8296a8e686ce32ee1b3721cfce0
7
- data.tar.gz: 8b2720a1bd23f634d5ae5475cad76e39c2a5845f73e99b4059421818af5b2bf34f278186bf807fdb615b146581055e10ab950c6079364262564eb5d789c0cb55
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
- gem 'ruby_event_store', path: '../ruby_event_store'
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', path: '../aggregate_root'
7
- gem 'bounded_context', path: '../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 v = ENV['RAILS_VERSION']
11
- gem 'rails', v
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.const_missing \
5
- RailsEventStore::Client\#initialize \
6
- RailsEventStore::AsyncProxyStrategy::AfterCommit::AsyncRecord\#rolledback! \
7
- RailsEventStore::AsyncProxyStrategy::AfterCommit::AsyncRecord\#before_committed!
8
- SUBJECT ?= RailsEventStore*
9
-
10
- install: ## Install gem dependencies
11
- @echo "Installing gem dependencies"
12
- @bundle install
13
-
14
- remove-lock:
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/active_job_dispatcher'
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/deprecations'
11
+ require 'rails_event_store/browser'
7
12
 
8
13
  module RailsEventStore
9
- Event = RubyEventStore::Event
10
- InMemoryRepository = RubyEventStore::InMemoryRepository
11
- EventBroker = RubyEventStore::PubSub::Broker
12
- Projection = RubyEventStore::Projection
13
- WrongExpectedEventVersion = RubyEventStore::WrongExpectedEventVersion
14
- InvalidExpectedVersion = RubyEventStore::InvalidExpectedVersion
15
- IncorrectStreamData = RubyEventStore::IncorrectStreamData
16
- EventNotFound = RubyEventStore::EventNotFound
17
- SubscriberNotExist = RubyEventStore::SubscriberNotExist
18
- InvalidHandler = RubyEventStore::InvalidHandler
19
- InvalidPageStart = RubyEventStore::InvalidPageStart
20
- InvalidPageSize = RubyEventStore::InvalidPageSize
21
- GLOBAL_STREAM = RubyEventStore::GLOBAL_STREAM
22
- PAGE_SIZE = RubyEventStore::PAGE_SIZE
23
- end
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
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ruby_event_store/browser/app'
4
+
5
+ module RailsEventStore
6
+ Browser = RubyEventStore::Browser::App.for(event_store_locator: -> { Rails.configuration.event_store })
7
+ 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
- event_broker: EventBroker.new(dispatcher: ActiveJobDispatcher.new),
8
- request_metadata: default_request_metadata,
9
- page_size: PAGE_SIZE)
10
- super(repository: repository,
11
- mapper: mapper,
12
- event_broker: event_broker,
13
- page_size: page_size)
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsEventStore
2
4
  class Middleware
3
5
  def initialize(app)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/railtie'
2
4
  require 'rails_event_store/middleware'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RailsEventStore
2
- VERSION = "0.30.0"
4
+ VERSION = "1.3.1"
3
5
  end
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_event_store_active_record'
2
4
  require 'rails_event_store/all'
@@ -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.add_development_dependency 'bundler', '~> 1.15'
29
- spec.add_development_dependency 'rake', '~> 10.0'
30
- spec.add_development_dependency 'rspec', '~> 3.6'
31
- spec.add_development_dependency 'rails', '~> 5.2'
32
- spec.add_development_dependency 'sqlite3'
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: 0.30.0
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: 2018-05-31 00:00:00.000000000 Z
11
+ date: 2021-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
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.5.1.2
118
- type: :development
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.5.1.2
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: 0.30.0
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: 0.30.0
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: 0.30.0
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: 0.30.0
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: 0.30.0
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: 0.30.0
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: 0.30.0
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: 0.30.0
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/active_job_dispatcher.rb
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/deprecations.rb
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
- rubyforge_project:
282
- rubygems_version: 2.7.6
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
@@ -1,7 +0,0 @@
1
- module RailsEventStore
2
- def self.const_missing(const_name)
3
- super unless const_name == :MethodNotDefined
4
- warn "`RailsEventStore::MethodNotDefined` has been deprecated. Use `RailsEventStore::InvalidHandler` instead."
5
- InvalidHandler
6
- end
7
- end
data/tmp/.keep DELETED
File without changes