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 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