ruby_event_store 0.17.0 → 0.18.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/Makefile +12 -8
- data/lib/ruby_event_store/client.rb +6 -2
- data/lib/ruby_event_store/errors.rb +2 -2
- data/lib/ruby_event_store/pub_sub/broker.rb +5 -1
- data/lib/ruby_event_store/pub_sub/dispatcher.rb +5 -0
- data/lib/ruby_event_store/spec/dispatcher_lint.rb +28 -0
- data/lib/ruby_event_store/spec/event_broker_lint.rb +24 -0
- data/lib/ruby_event_store/version.rb +1 -1
- data/ruby_event_store.gemspec +3 -4
- metadata +8 -23
- data/Rakefile +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '001956750bd7d68e07b581f7b1c663f8de9e6240'
|
4
|
+
data.tar.gz: 39d8a11eea0f103619e5663b28c2b0cc0bbc041b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb16c704a08ff8c48ab5451d3d5e6273d43dddcee0d40bd9962e41284f53fd91af49b63b0d8b52557df718269878fba246978e380de01be52b2cf5e3d8dbf14c
|
7
|
+
data.tar.gz: 901ac8b836a0ef6c3ae35e41cba6141d8090e6777b844a552fe20cee06467e35d9dffd80697769d88fe0d4c173bc47733e30b3f5d429baecf004df1189a75910
|
data/Makefile
CHANGED
@@ -1,25 +1,29 @@
|
|
1
|
-
|
1
|
+
GEM_VERSION = `cat ../RES_VERSION`
|
2
|
+
|
3
|
+
install: ## Install gem dependencies
|
2
4
|
@echo "Installing gem dependencies"
|
3
5
|
@bundle install
|
4
6
|
|
5
|
-
install: install-bundler ## Prepare current development environment
|
6
|
-
|
7
7
|
test: ## Run tests
|
8
8
|
@echo "Running basic tests - beware: this won't guarantee build pass"
|
9
9
|
@bundle exec rspec
|
10
10
|
|
11
11
|
mutate: test ## Run mutation tests
|
12
12
|
@echo "Running mutation tests - only 100% free mutation will be accepted"
|
13
|
-
@bundle exec mutant --include lib --require ruby_event_store --use rspec
|
13
|
+
@bundle exec mutant --include lib --require ruby_event_store --use rspec "RubyEventStore*" \
|
14
|
+
--ignore-subject "RubyEventStore.const_missing"
|
14
15
|
|
15
|
-
|
16
|
-
@
|
17
|
-
@
|
16
|
+
build:
|
17
|
+
@gem build -V ruby_event_store.gemspec
|
18
|
+
@mkdir -p pkg/
|
19
|
+
@mv ruby_event_store-$(GEM_VERSION).gem pkg/
|
18
20
|
|
19
|
-
|
21
|
+
release: build
|
22
|
+
@gem push pkg/ruby_event_store-$(GEM_VERSION).gem
|
20
23
|
|
21
24
|
help:
|
22
25
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
23
26
|
|
27
|
+
.PHONY: help
|
24
28
|
.DEFAULT_GOAL := help
|
25
29
|
|
@@ -64,13 +64,13 @@ module RubyEventStore
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def subscribe(subscriber, event_types, &proc)
|
67
|
-
event_broker.add_subscriber(subscriber, event_types).tap do |unsub|
|
67
|
+
event_broker.add_subscriber(subscriber_or_proxy(subscriber), event_types).tap do |unsub|
|
68
68
|
handle_subscribe(unsub, &proc)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
72
|
def subscribe_to_all_events(subscriber, &proc)
|
73
|
-
event_broker.add_global_subscriber(subscriber).tap do |unsub|
|
73
|
+
event_broker.add_global_subscriber(subscriber_or_proxy(subscriber)).tap do |unsub|
|
74
74
|
handle_subscribe(unsub, &proc)
|
75
75
|
end
|
76
76
|
end
|
@@ -78,6 +78,10 @@ module RubyEventStore
|
|
78
78
|
private
|
79
79
|
attr_reader :repository, :page_size, :event_broker, :metadata_proc, :clock
|
80
80
|
|
81
|
+
def subscriber_or_proxy(subscriber)
|
82
|
+
subscriber.instance_of?(Class) ? event_broker.proxy_for(subscriber) : subscriber
|
83
|
+
end
|
84
|
+
|
81
85
|
def enrich_event_metadata(event)
|
82
86
|
metadata = event.metadata
|
83
87
|
metadata[:timestamp] ||= clock.()
|
@@ -8,8 +8,8 @@ module RubyEventStore
|
|
8
8
|
InvalidPageSize = Class.new(ArgumentError)
|
9
9
|
|
10
10
|
class InvalidHandler < StandardError
|
11
|
-
def initialize(
|
12
|
-
super("#call method not found in #{
|
11
|
+
def initialize(subscriber_klass)
|
12
|
+
super("#call method not found in #{subscriber_klass} subscriber. Are you sure it is a valid subscriber?")
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -27,12 +27,16 @@ module RubyEventStore
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
def proxy_for(klass)
|
31
|
+
dispatcher.proxy_for(klass)
|
32
|
+
end
|
33
|
+
|
30
34
|
private
|
31
35
|
attr_reader :subscribers, :dispatcher
|
32
36
|
|
33
37
|
def verify_subscriber(subscriber)
|
34
38
|
raise SubscriberNotExist if subscriber.nil?
|
35
|
-
raise InvalidHandler.new(subscriber) unless subscriber.respond_to?(:call)
|
39
|
+
raise InvalidHandler.new(subscriber.class) unless subscriber.respond_to?(:call)
|
36
40
|
end
|
37
41
|
|
38
42
|
def subscribe(subscriber, event_types)
|
@@ -6,4 +6,32 @@ RSpec.shared_examples :dispatcher do |dispatcher|
|
|
6
6
|
expect(handler).to receive(:call).with(event)
|
7
7
|
dispatcher.(handler, event)
|
8
8
|
end
|
9
|
+
|
10
|
+
specify "returns callable proxy" do
|
11
|
+
event = instance_double(::RubyEventStore::Event)
|
12
|
+
|
13
|
+
handler = dispatcher.proxy_for(HandlerClass)
|
14
|
+
expect(handler).to receive(:call).with(event).and_call_original
|
15
|
+
dispatcher.(handler, event)
|
16
|
+
expect(HandlerClass.received).to eq(event)
|
17
|
+
end
|
18
|
+
|
19
|
+
specify "fails to build proxy when no call method defined on class" do
|
20
|
+
message = "#call method not found " +
|
21
|
+
"in String subscriber." +
|
22
|
+
" Are you sure it is a valid subscriber?"
|
23
|
+
|
24
|
+
expect { dispatcher.proxy_for(String) }.to raise_error(::RubyEventStore::InvalidHandler, message)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
class HandlerClass
|
29
|
+
@@received = nil
|
30
|
+
def self.received
|
31
|
+
@@received
|
32
|
+
end
|
33
|
+
def call(event)
|
34
|
+
@@received = event
|
35
|
+
end
|
36
|
+
end
|
9
37
|
end
|
@@ -120,4 +120,28 @@ RSpec.shared_examples :event_broker do |broker_class|
|
|
120
120
|
broker_with_custom_dispatcher.notify_subscribers(event1)
|
121
121
|
expect(dispatcher.dispatched).to eq([{subscriber: handler, event: event1}])
|
122
122
|
end
|
123
|
+
|
124
|
+
it "returns callable proxy" do
|
125
|
+
proxy = broker.proxy_for(TestHandler)
|
126
|
+
expect(proxy.respond_to?(:call)).to be_truthy
|
127
|
+
end
|
128
|
+
|
129
|
+
specify "fails to build proxy when no call method defined on class" do
|
130
|
+
message = "#call method not found " +
|
131
|
+
"in InvalidTestHandler subscriber." +
|
132
|
+
" Are you sure it is a valid subscriber?"
|
133
|
+
|
134
|
+
expect { broker.proxy_for(InvalidTestHandler) }.to raise_error(::RubyEventStore::InvalidHandler, message)
|
135
|
+
end
|
136
|
+
|
137
|
+
private
|
138
|
+
class HandlerClass
|
139
|
+
@@received = nil
|
140
|
+
def self.received
|
141
|
+
@@received
|
142
|
+
end
|
143
|
+
def call(event)
|
144
|
+
@@received = event
|
145
|
+
end
|
146
|
+
end
|
123
147
|
end
|
data/ruby_event_store.gemspec
CHANGED
@@ -19,9 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.15'
|
23
23
|
spec.add_development_dependency 'rake', '~> 10.0'
|
24
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
25
|
-
spec.add_development_dependency '
|
26
|
-
spec.add_development_dependency 'mutant-rspec', '~> 0.8.11'
|
24
|
+
spec.add_development_dependency 'rspec', '~> 3.6'
|
25
|
+
spec.add_development_dependency 'mutant-rspec', '~> 0.8.14'
|
27
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arkency
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.15'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.15'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,42 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
47
|
+
version: '3.6'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: pry
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
54
|
+
version: '3.6'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: mutant-rspec
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.8.
|
61
|
+
version: 0.8.14
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.8.
|
68
|
+
version: 0.8.14
|
83
69
|
description: Implementation of Event Store in Ruby
|
84
70
|
email:
|
85
71
|
- dev@arkency.com
|
@@ -91,7 +77,6 @@ files:
|
|
91
77
|
- Gemfile
|
92
78
|
- Makefile
|
93
79
|
- README.md
|
94
|
-
- Rakefile
|
95
80
|
- lib/ruby_event_store.rb
|
96
81
|
- lib/ruby_event_store/client.rb
|
97
82
|
- lib/ruby_event_store/constants.rb
|
data/Rakefile
DELETED