ruby_event_store 0.31.1 → 0.32.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 +2 -1
- data/Makefile +8 -8
- data/lib/ruby_event_store.rb +6 -1
- data/lib/ruby_event_store/async_dispatcher.rb +7 -1
- data/lib/ruby_event_store/async_proxy_strategy.rb +9 -0
- data/lib/ruby_event_store/client.rb +51 -76
- data/lib/ruby_event_store/composed_dispatcher.rb +22 -0
- data/lib/ruby_event_store/deprecated_read_api_rewriter.rb +13 -2
- data/lib/ruby_event_store/errors.rb +1 -6
- data/lib/ruby_event_store/immediate_async_dispatcher.rb +15 -0
- data/lib/ruby_event_store/in_memory_repository.rb +23 -2
- data/lib/ruby_event_store/instrumented_dispatcher.rb +21 -0
- data/lib/ruby_event_store/instrumented_repository.rb +61 -0
- data/lib/ruby_event_store/pub_sub/broker.rb +1 -1
- data/lib/ruby_event_store/pub_sub/dispatcher.rb +7 -12
- data/lib/ruby_event_store/spec/broker_lint.rb +20 -4
- data/lib/ruby_event_store/spec/dispatcher_lint.rb +4 -35
- data/lib/ruby_event_store/spec/event_repository_lint.rb +1048 -955
- data/lib/ruby_event_store/spec/scheduler_lint.rb +9 -0
- data/lib/ruby_event_store/specification.rb +47 -56
- data/lib/ruby_event_store/specification_reader.rb +35 -0
- data/lib/ruby_event_store/specification_result.rb +206 -0
- data/lib/ruby_event_store/version.rb +1 -1
- data/ruby_event_store.gemspec +2 -1
- metadata +25 -5
- data/lib/ruby_event_store/deprecations.rb +0 -7
@@ -2,54 +2,11 @@ module RubyEventStore
|
|
2
2
|
|
3
3
|
# Used for building and executing the query specification.
|
4
4
|
class Specification
|
5
|
-
# @private
|
6
|
-
# @api private
|
7
|
-
NO_LIMIT = Object.new.freeze
|
8
|
-
# @private
|
9
|
-
# @api private
|
10
|
-
NO_BATCH = Object.new.freeze
|
11
5
|
DEFAULT_BATCH_SIZE = 100
|
12
|
-
|
13
|
-
class Result < Struct.new(:direction, :start, :count, :stream, :batch_size)
|
14
|
-
def limit?
|
15
|
-
!count.equal?(NO_LIMIT)
|
16
|
-
end
|
17
|
-
|
18
|
-
def global_stream?
|
19
|
-
stream.global?
|
20
|
-
end
|
21
|
-
|
22
|
-
def stream_name
|
23
|
-
stream.name
|
24
|
-
end
|
25
|
-
|
26
|
-
def head?
|
27
|
-
start.equal?(:head)
|
28
|
-
end
|
29
|
-
|
30
|
-
def forward?
|
31
|
-
direction.equal?(:forward)
|
32
|
-
end
|
33
|
-
|
34
|
-
def backward?
|
35
|
-
!forward?
|
36
|
-
end
|
37
|
-
|
38
|
-
def batched?
|
39
|
-
!batch_size.equal?(NO_BATCH)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
private_constant :Result
|
43
|
-
|
44
6
|
# @api private
|
45
7
|
# @private
|
46
|
-
|
47
|
-
|
48
|
-
# @api private
|
49
|
-
# @private
|
50
|
-
def initialize(repository, mapper, result = Result.new(:forward, :head, NO_LIMIT, Stream.new(GLOBAL_STREAM), NO_BATCH))
|
51
|
-
@mapper = mapper
|
52
|
-
@repository = repository
|
8
|
+
def initialize(reader, result = SpecificationResult.new)
|
9
|
+
@reader = reader
|
53
10
|
@result = result
|
54
11
|
end
|
55
12
|
|
@@ -59,7 +16,7 @@ module RubyEventStore
|
|
59
16
|
# @param stream_name [String] name of the stream to get events from
|
60
17
|
# @return [Specification]
|
61
18
|
def stream(stream_name)
|
62
|
-
Specification.new(
|
19
|
+
Specification.new(reader, result.dup { |r| r.stream = Stream.new(stream_name) })
|
63
20
|
end
|
64
21
|
|
65
22
|
# Limits the query to events before or after another event.
|
@@ -75,9 +32,9 @@ module RubyEventStore
|
|
75
32
|
raise InvalidPageStart unless [:head].include?(start)
|
76
33
|
else
|
77
34
|
raise InvalidPageStart if start.nil? || start.empty?
|
78
|
-
raise EventNotFound.new(start) unless
|
35
|
+
raise EventNotFound.new(start) unless reader.has_event?(start)
|
79
36
|
end
|
80
|
-
Specification.new(
|
37
|
+
Specification.new(reader, result.dup { |r| r.start = start })
|
81
38
|
end
|
82
39
|
|
83
40
|
# Sets the order of reading events to ascending (forward from the start).
|
@@ -85,7 +42,7 @@ module RubyEventStore
|
|
85
42
|
#
|
86
43
|
# @return [Specification]
|
87
44
|
def forward
|
88
|
-
Specification.new(
|
45
|
+
Specification.new(reader, result.dup { |r| r.direction = :forward })
|
89
46
|
end
|
90
47
|
|
91
48
|
# Sets the order of reading events to descending (backward from the start).
|
@@ -93,7 +50,7 @@ module RubyEventStore
|
|
93
50
|
#
|
94
51
|
# @return [Specification]
|
95
52
|
def backward
|
96
|
-
Specification.new(
|
53
|
+
Specification.new(reader, result.dup { |r| r.direction = :backward })
|
97
54
|
end
|
98
55
|
|
99
56
|
# Limits the query to specified number of events.
|
@@ -103,7 +60,7 @@ module RubyEventStore
|
|
103
60
|
# @return [Specification]
|
104
61
|
def limit(count)
|
105
62
|
raise InvalidPageSize unless count && count > 0
|
106
|
-
Specification.new(
|
63
|
+
Specification.new(reader, result.dup { |r| r.count = count })
|
107
64
|
end
|
108
65
|
|
109
66
|
# Executes the query based on the specification built up to this point.
|
@@ -115,9 +72,8 @@ module RubyEventStore
|
|
115
72
|
def each_batch
|
116
73
|
return to_enum(:each_batch) unless block_given?
|
117
74
|
|
118
|
-
|
119
|
-
|
120
|
-
yield batch.map { |serialized_record| mapper.serialized_record_to_event(serialized_record) }
|
75
|
+
reader.each(in_batches(result.batch_size).result) do |batch|
|
76
|
+
yield batch
|
121
77
|
end
|
122
78
|
end
|
123
79
|
|
@@ -149,11 +105,46 @@ module RubyEventStore
|
|
149
105
|
# @param batch_size [Integer] number of events to read in a single batch
|
150
106
|
# @return [Specification]
|
151
107
|
def in_batches(batch_size = DEFAULT_BATCH_SIZE)
|
152
|
-
Specification.new(
|
108
|
+
Specification.new(reader, result.dup { |r| r.read_as = :batch; r.batch_size = batch_size })
|
153
109
|
end
|
154
110
|
alias :in_batches_of :in_batches
|
155
111
|
|
112
|
+
# Specifies that only first event should be read.
|
113
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
114
|
+
#
|
115
|
+
# @return [Specification]
|
116
|
+
def read_first
|
117
|
+
Specification.new(reader, result.dup { |r| r.read_as = :first })
|
118
|
+
end
|
119
|
+
|
120
|
+
# Specifies that only last event should be read.
|
121
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
122
|
+
#
|
123
|
+
# @return [Specification]
|
124
|
+
def read_last
|
125
|
+
Specification.new(reader, result.dup { |r| r.read_as = :last })
|
126
|
+
end
|
127
|
+
|
128
|
+
# Executes the query based on the specification built up to this point.
|
129
|
+
# Returns the first event in specified collection of events.
|
130
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
131
|
+
#
|
132
|
+
# @return [Event, nil]
|
133
|
+
def first
|
134
|
+
reader.one(read_first.result)
|
135
|
+
end
|
136
|
+
|
137
|
+
# Executes the query based on the specification built up to this point.
|
138
|
+
# Returns the last event in specified collection of events.
|
139
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
140
|
+
#
|
141
|
+
# @return [Event, nil]
|
142
|
+
def last
|
143
|
+
reader.one(read_last.result)
|
144
|
+
end
|
145
|
+
|
146
|
+
attr_reader :result
|
156
147
|
private
|
157
|
-
attr_reader :
|
148
|
+
attr_reader :reader
|
158
149
|
end
|
159
150
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module RubyEventStore
|
2
|
+
# Used for fetching events based on given query specification.
|
3
|
+
class SpecificationReader
|
4
|
+
# @api private
|
5
|
+
# @private
|
6
|
+
def initialize(repository, mapper)
|
7
|
+
@repository = repository
|
8
|
+
@mapper = mapper
|
9
|
+
end
|
10
|
+
|
11
|
+
# @api private
|
12
|
+
# @private
|
13
|
+
def one(specification_result)
|
14
|
+
record = repository.read(specification_result)
|
15
|
+
mapper.serialized_record_to_event(record) if record
|
16
|
+
end
|
17
|
+
|
18
|
+
# @api private
|
19
|
+
# @private
|
20
|
+
def each(specification_result)
|
21
|
+
repository.read(specification_result).each do |batch|
|
22
|
+
yield batch.map { |serialized_record| mapper.serialized_record_to_event(serialized_record) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# @api private
|
27
|
+
# @private
|
28
|
+
def has_event?(event_id)
|
29
|
+
repository.has_event?(event_id)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
attr_reader :repository, :mapper
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,206 @@
|
|
1
|
+
module RubyEventStore
|
2
|
+
class SpecificationResult
|
3
|
+
def initialize(direction: :forward,
|
4
|
+
start: :head,
|
5
|
+
count: nil,
|
6
|
+
stream: Stream.new(GLOBAL_STREAM),
|
7
|
+
read_as: :all,
|
8
|
+
batch_size: Specification::DEFAULT_BATCH_SIZE)
|
9
|
+
@attributes = Struct.new(:direction, :start, :count, :stream, :read_as, :batch_size)
|
10
|
+
.new(direction, start, count, stream, read_as, batch_size)
|
11
|
+
freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
# Limited results. True if number of read elements are limited
|
15
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
16
|
+
#
|
17
|
+
# @return [Boolean]
|
18
|
+
def limit?
|
19
|
+
!attributes.count.nil?
|
20
|
+
end
|
21
|
+
|
22
|
+
# Results limit or infinity if limit not defined
|
23
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
24
|
+
#
|
25
|
+
# @return [Integer|Infinity]
|
26
|
+
def limit
|
27
|
+
attributes.count || Float::INFINITY
|
28
|
+
end
|
29
|
+
|
30
|
+
# Stream definition. Stream to be read or nil
|
31
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
32
|
+
#
|
33
|
+
# @return [Stream|nil]
|
34
|
+
def stream
|
35
|
+
attributes.stream
|
36
|
+
end
|
37
|
+
|
38
|
+
# Starting position. True is starting from head
|
39
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
40
|
+
#
|
41
|
+
# @return [Boolean]
|
42
|
+
def head?
|
43
|
+
start.equal?(:head)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Starting position. Event id of starting event or :head
|
47
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
48
|
+
#
|
49
|
+
# @return [String|Symbol]
|
50
|
+
def start
|
51
|
+
attributes.start
|
52
|
+
end
|
53
|
+
|
54
|
+
# Read direction. True is reading forward
|
55
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
56
|
+
#
|
57
|
+
# @return [Boolean]
|
58
|
+
def forward?
|
59
|
+
get_direction.equal?(:forward)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Read direction. True is reading backward
|
63
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
64
|
+
#
|
65
|
+
# @return [Boolean]
|
66
|
+
def backward?
|
67
|
+
get_direction.equal?(:backward)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Size of batch to read (only for :batch read strategy)
|
71
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
72
|
+
#
|
73
|
+
# @return [Integer]
|
74
|
+
def batch_size
|
75
|
+
attributes.batch_size
|
76
|
+
end
|
77
|
+
|
78
|
+
# Read strategy. True if items will be read in batches
|
79
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
80
|
+
#
|
81
|
+
# @return [Boolean]
|
82
|
+
def batched?
|
83
|
+
attributes.read_as.equal?(:batch)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Read strategy. True if first item will be read
|
87
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
88
|
+
#
|
89
|
+
# @return [Boolean]
|
90
|
+
def first?
|
91
|
+
attributes.read_as.equal?(:first)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Read strategy. True if last item will be read
|
95
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
96
|
+
#
|
97
|
+
# @return [Boolean]
|
98
|
+
def last?
|
99
|
+
attributes.read_as.equal?(:last)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Read strategy. True if all items will be read
|
103
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
104
|
+
#
|
105
|
+
# @return [Boolean]
|
106
|
+
def all?
|
107
|
+
attributes.read_as.equal?(:all)
|
108
|
+
end
|
109
|
+
|
110
|
+
# Clone [SpecificationResult]
|
111
|
+
# If block is given cloned attributes might be modified.
|
112
|
+
#
|
113
|
+
# @return [SpecificationResult]
|
114
|
+
def dup
|
115
|
+
new_attributes = attributes.dup
|
116
|
+
yield new_attributes if block_given?
|
117
|
+
SpecificationResult.new(new_attributes.to_h)
|
118
|
+
end
|
119
|
+
|
120
|
+
# Two specification attributess are equal if:
|
121
|
+
# * they are of the same class
|
122
|
+
# * have identical data (verified with eql? method)
|
123
|
+
#
|
124
|
+
# @param other_spec [SpecificationResult, Object] object to compare
|
125
|
+
#
|
126
|
+
# @return [TrueClass, FalseClass]
|
127
|
+
def ==(other_spec)
|
128
|
+
other_spec.hash.eql?(hash)
|
129
|
+
end
|
130
|
+
|
131
|
+
# @private
|
132
|
+
BIG_VALUE = 0b100010010100011110111101100001011111100101001010111110101000000
|
133
|
+
|
134
|
+
# Generates a Fixnum hash value for this object. This function
|
135
|
+
# have the property that a.eql?(b) implies a.hash == b.hash.
|
136
|
+
#
|
137
|
+
# The hash value is used along with eql? by the Hash class to
|
138
|
+
# determine if two objects reference the same hash key.
|
139
|
+
#
|
140
|
+
# This hash is based on
|
141
|
+
# * class
|
142
|
+
# * direction
|
143
|
+
# * start
|
144
|
+
# * count
|
145
|
+
# * stream
|
146
|
+
# * read_as
|
147
|
+
# * batch_size
|
148
|
+
#
|
149
|
+
# @return [Integer]
|
150
|
+
def hash
|
151
|
+
[
|
152
|
+
self.class,
|
153
|
+
get_direction,
|
154
|
+
start,
|
155
|
+
limit,
|
156
|
+
stream,
|
157
|
+
attributes.read_as,
|
158
|
+
batch_size,
|
159
|
+
].hash ^ BIG_VALUE
|
160
|
+
end
|
161
|
+
|
162
|
+
# @deprecated Use {#limit} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.32.0 More info}
|
163
|
+
def count
|
164
|
+
warn <<~EOW
|
165
|
+
RubyEventStore::SpecificationResult#count has been deprecated.
|
166
|
+
Use RubyEventStore::SpecificationResult#limit instead.
|
167
|
+
EOW
|
168
|
+
limit
|
169
|
+
end
|
170
|
+
|
171
|
+
# @deprecated Use {#forward?} or {#backward?} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.32.0 More info}
|
172
|
+
def direction
|
173
|
+
warn <<~EOW
|
174
|
+
RubyEventStore::SpecificationResult#direction has been deprecated.
|
175
|
+
Use RubyEventStore::SpecificationResult#forward? or
|
176
|
+
RubyEventStore::SpecificationResult#backward? instead.
|
177
|
+
EOW
|
178
|
+
get_direction
|
179
|
+
end
|
180
|
+
|
181
|
+
# @deprecated Use {#stream.name} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.32.0 More info}
|
182
|
+
def stream_name
|
183
|
+
warn <<~EOW
|
184
|
+
RubyEventStore::SpecificationResult#stream_name has been deprecated.
|
185
|
+
Use RubyEventStore::SpecificationResult#stream.name instead.
|
186
|
+
EOW
|
187
|
+
stream.name
|
188
|
+
end
|
189
|
+
|
190
|
+
# @deprecated Use {#stream.global?} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.32.0 More info}
|
191
|
+
def global_stream?
|
192
|
+
warn <<~EOW
|
193
|
+
RubyEventStore::SpecificationResult#global_stream? has been deprecated.
|
194
|
+
Use RubyEventStore::SpecificationResult#stream.global? instead.
|
195
|
+
EOW
|
196
|
+
stream.global?
|
197
|
+
end
|
198
|
+
|
199
|
+
private
|
200
|
+
attr_reader :attributes
|
201
|
+
|
202
|
+
def get_direction
|
203
|
+
attributes.direction
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
data/ruby_event_store.gemspec
CHANGED
@@ -30,9 +30,10 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency 'bundler', '~> 1.15'
|
31
31
|
spec.add_development_dependency 'rake', '~> 10.0'
|
32
32
|
spec.add_development_dependency 'rspec', '~> 3.6'
|
33
|
-
spec.add_development_dependency 'mutant-rspec', '~> 0.8.
|
33
|
+
spec.add_development_dependency 'mutant-rspec', '~> 0.8.17'
|
34
34
|
spec.add_development_dependency 'parser'
|
35
35
|
spec.add_development_dependency 'unparser'
|
36
36
|
spec.add_development_dependency 'astrolabe'
|
37
37
|
spec.add_development_dependency 'google-protobuf', '~> 3.5.1.2'
|
38
|
+
spec.add_development_dependency 'activesupport', '~> 5.0'
|
38
39
|
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.32.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-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.8.
|
75
|
+
version: 0.8.17
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.8.
|
82
|
+
version: 0.8.17
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: parser
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 3.5.1.2
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: activesupport
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '5.0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '5.0'
|
139
153
|
description: Implementation of Event Store in Ruby
|
140
154
|
email:
|
141
155
|
- dev@arkency.com
|
@@ -154,15 +168,18 @@ files:
|
|
154
168
|
- lib/ruby_event_store/async_proxy_strategy.rb
|
155
169
|
- lib/ruby_event_store/batch_enumerator.rb
|
156
170
|
- lib/ruby_event_store/client.rb
|
171
|
+
- lib/ruby_event_store/composed_dispatcher.rb
|
157
172
|
- lib/ruby_event_store/constants.rb
|
158
173
|
- lib/ruby_event_store/correlated_commands.rb
|
159
174
|
- lib/ruby_event_store/deprecated_read_api_rewriter.rb
|
160
175
|
- lib/ruby_event_store/deprecated_read_api_runner.rb
|
161
|
-
- lib/ruby_event_store/deprecations.rb
|
162
176
|
- lib/ruby_event_store/errors.rb
|
163
177
|
- lib/ruby_event_store/event.rb
|
164
178
|
- lib/ruby_event_store/expected_version.rb
|
179
|
+
- lib/ruby_event_store/immediate_async_dispatcher.rb
|
165
180
|
- lib/ruby_event_store/in_memory_repository.rb
|
181
|
+
- lib/ruby_event_store/instrumented_dispatcher.rb
|
182
|
+
- lib/ruby_event_store/instrumented_repository.rb
|
166
183
|
- lib/ruby_event_store/link_by_metadata.rb
|
167
184
|
- lib/ruby_event_store/mappers/default.rb
|
168
185
|
- lib/ruby_event_store/mappers/null_mapper.rb
|
@@ -176,8 +193,11 @@ files:
|
|
176
193
|
- lib/ruby_event_store/spec/broker_lint.rb
|
177
194
|
- lib/ruby_event_store/spec/dispatcher_lint.rb
|
178
195
|
- lib/ruby_event_store/spec/event_repository_lint.rb
|
196
|
+
- lib/ruby_event_store/spec/scheduler_lint.rb
|
179
197
|
- lib/ruby_event_store/spec/subscriptions_lint.rb
|
180
198
|
- lib/ruby_event_store/specification.rb
|
199
|
+
- lib/ruby_event_store/specification_reader.rb
|
200
|
+
- lib/ruby_event_store/specification_result.rb
|
181
201
|
- lib/ruby_event_store/stream.rb
|
182
202
|
- lib/ruby_event_store/version.rb
|
183
203
|
- ruby_event_store.gemspec
|