ruby_event_store 0.34.0 → 0.35.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 +7 -0
- data/Makefile +6 -52
- data/lib/ruby_event_store.rb +1 -0
- data/lib/ruby_event_store/batch_enumerator.rb +1 -2
- data/lib/ruby_event_store/in_memory_repository.rb +14 -6
- data/lib/ruby_event_store/instrumented_repository.rb +6 -0
- data/lib/ruby_event_store/mappers/default.rb +1 -8
- data/lib/ruby_event_store/mappers/protobuf.rb +3 -25
- data/lib/ruby_event_store/metadata.rb +2 -2
- data/lib/ruby_event_store/spec/event_repository_lint.rb +42 -1
- data/lib/ruby_event_store/specification.rb +8 -0
- data/lib/ruby_event_store/specification_reader.rb +6 -0
- data/lib/ruby_event_store/transform_keys.rb +25 -0
- data/lib/ruby_event_store/version.rb +1 -1
- data/ruby_event_store.gemspec +0 -10
- metadata +4 -129
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2e4768baf6a615d130234f71b2eeeeea911baafcab466651e42e4f5873430a3
|
4
|
+
data.tar.gz: 587f48214166735f91685638143133723cb7c3e2e46a3ec657490ce7c13cda00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2115d731ca0d1f6e6b9eb26d4a8cf8e8ea41c634bb521de9cfc2b181c3fec7f98d4b0a33667befeb16343247fdae1315cf543ac77ab4808bf6cb23740f91233f
|
7
|
+
data.tar.gz: 71473199da981d2832cc60fac2887a4222b4a6606f15f0bf7356414ea11bdb3abd80ca38baf3f07cb377c6afe4e69662db0c97d3bdf5fbe364253d2d713b9fcd
|
data/Gemfile
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
3
|
|
4
|
+
eval_gemfile File.expand_path('../lib/Gemfile.shared', __dir__)
|
5
|
+
|
4
6
|
gem 'protobuf_nested_struct'
|
7
|
+
gem 'parser'
|
8
|
+
gem 'unparser'
|
9
|
+
gem 'astrolabe'
|
10
|
+
gem 'google-protobuf', '~> 3.5.1.2'
|
11
|
+
gem 'activesupport', '~> 5.0'
|
data/Makefile
CHANGED
@@ -14,57 +14,11 @@ IGNORE = RubyEventStore::InMemoryRepository\#append_with_synchronize \
|
|
14
14
|
RubyEventStore::SpecificationResult\#count \
|
15
15
|
RubyEventStore::SpecificationResult\#direction \
|
16
16
|
RubyEventStore::SpecificationResult\#stream_name \
|
17
|
-
RubyEventStore::SpecificationResult\#global_stream?
|
18
|
-
|
19
|
-
|
17
|
+
RubyEventStore::SpecificationResult\#global_stream?
|
20
18
|
SUBJECT ?= RubyEventStore*
|
21
19
|
|
22
|
-
install
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
@echo "Removing resolved dependency versions"
|
28
|
-
-rm Gemfile.lock
|
29
|
-
|
30
|
-
reinstall: remove-lock install ## Removing resolved dependency versions
|
31
|
-
|
32
|
-
test: ## Run unit tests
|
33
|
-
@echo "Running unit tests"
|
34
|
-
@bundle exec rspec
|
35
|
-
|
36
|
-
mutate: test ## Run mutation tests
|
37
|
-
@echo "Running mutation tests"
|
38
|
-
@MUTATING=true bundle exec mutant --include lib \
|
39
|
-
$(addprefix --require ,$(REQUIRE)) \
|
40
|
-
$(addprefix --ignore-subject ,$(IGNORE)) \
|
41
|
-
--use rspec "$(SUBJECT)"
|
42
|
-
|
43
|
-
mutate-fast: ## Run mutation tests with --fail-fast
|
44
|
-
@echo "Running mutation tests"
|
45
|
-
@MUTATING=true bundle exec mutant --include lib \
|
46
|
-
$(addprefix --require ,$(REQUIRE)) \
|
47
|
-
$(addprefix --ignore-subject ,$(IGNORE)) \
|
48
|
-
--fail-fast \
|
49
|
-
--use rspec "$(SUBJECT)"
|
50
|
-
|
51
|
-
build:
|
52
|
-
@echo "Building gem package"
|
53
|
-
@gem build -V $(GEM_NAME).gemspec
|
54
|
-
@mkdir -p pkg/
|
55
|
-
@mv $(GEM_NAME)-$(GEM_VERSION).gem pkg/
|
56
|
-
|
57
|
-
push:
|
58
|
-
@echo "Pushing package to RubyGems"
|
59
|
-
@gem push -k dev_arkency pkg/$(GEM_NAME)-$(GEM_VERSION).gem
|
60
|
-
|
61
|
-
clean:
|
62
|
-
@echo "Removing previously built package"
|
63
|
-
-rm pkg/$(GEM_NAME)-$(GEM_VERSION).gem
|
64
|
-
|
65
|
-
help:
|
66
|
-
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
67
|
-
|
68
|
-
.PHONY: help
|
69
|
-
.DEFAULT_GOAL := help
|
70
|
-
|
20
|
+
include ../lib/install.mk
|
21
|
+
include ../lib/test.mk
|
22
|
+
include ../lib/mutant.mk
|
23
|
+
include ../lib/gem.mk
|
24
|
+
include ../lib/help.mk
|
data/lib/ruby_event_store.rb
CHANGED
@@ -14,6 +14,7 @@ require 'ruby_event_store/event'
|
|
14
14
|
require 'ruby_event_store/stream'
|
15
15
|
require 'ruby_event_store/expected_version'
|
16
16
|
require 'ruby_event_store/serialized_record'
|
17
|
+
require 'ruby_event_store/transform_keys'
|
17
18
|
require 'ruby_event_store/mappers/default'
|
18
19
|
require 'ruby_event_store/mappers/protobuf'
|
19
20
|
require 'ruby_event_store/mappers/null_mapper'
|
@@ -8,8 +8,7 @@ module RubyEventStore
|
|
8
8
|
|
9
9
|
def each
|
10
10
|
return to_enum unless block_given?
|
11
|
-
|
12
|
-
batch_offset = Integer(batch_offset)
|
11
|
+
0.step(total_limit - 1, batch_size) do |batch_offset|
|
13
12
|
batch_limit = [batch_size, total_limit - batch_offset].min
|
14
13
|
result = reader.call(batch_offset, batch_limit)
|
15
14
|
|
@@ -32,12 +32,7 @@ module RubyEventStore
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def read(spec)
|
35
|
-
events =
|
36
|
-
events = events.select{|e| spec.with_ids.any?{|x| x.eql?(e.event_id)}} if spec.with_ids?
|
37
|
-
events = events.select{|e| spec.with_types.any?{|x| x.eql?(e.event_type)}} if spec.with_types?
|
38
|
-
events = events.reverse if spec.backward?
|
39
|
-
events = events.drop(index_of(events, spec.start) + 1) unless spec.head?
|
40
|
-
events = events[0...spec.limit] if spec.limit?
|
35
|
+
events = read_scope(spec)
|
41
36
|
if spec.batched?
|
42
37
|
batch_reader = ->(offset, limit) { events.drop(offset).take(limit) }
|
43
38
|
BatchEnumerator.new(spec.batch_size, events.size, batch_reader).each
|
@@ -50,6 +45,10 @@ module RubyEventStore
|
|
50
45
|
end
|
51
46
|
end
|
52
47
|
|
48
|
+
def count(spec)
|
49
|
+
read_scope(spec).count
|
50
|
+
end
|
51
|
+
|
53
52
|
def update_messages(messages)
|
54
53
|
messages.each do |new_msg|
|
55
54
|
location = global.index{|m| new_msg.event_id.eql?(m.event_id)} or raise EventNotFound.new(new_msg.event_id)
|
@@ -68,6 +67,15 @@ module RubyEventStore
|
|
68
67
|
end
|
69
68
|
|
70
69
|
private
|
70
|
+
def read_scope(spec)
|
71
|
+
events = spec.stream.global? ? global : stream_of(spec.stream.name)
|
72
|
+
events = events.select{|e| spec.with_ids.any?{|x| x.eql?(e.event_id)}} if spec.with_ids?
|
73
|
+
events = events.select{|e| spec.with_types.any?{|x| x.eql?(e.event_type)}} if spec.with_types?
|
74
|
+
events = events.reverse if spec.backward?
|
75
|
+
events = events.drop(index_of(events, spec.start) + 1) unless spec.head?
|
76
|
+
events = events[0...spec.limit] if spec.limit?
|
77
|
+
events
|
78
|
+
end
|
71
79
|
|
72
80
|
def read_event(event_id)
|
73
81
|
global.find {|e| event_id.eql?(e.event_id)} or raise EventNotFound.new(event_id)
|
@@ -37,6 +37,12 @@ module RubyEventStore
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
def count(specification)
|
41
|
+
instrumentation.instrument("count.repository.rails_event_store", specification: specification) do
|
42
|
+
repository.count(specification)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
40
46
|
def update_messages(messages)
|
41
47
|
instrumentation.instrument("update_messages.repository.rails_event_store", messages: messages) do
|
42
48
|
repository.update_messages(messages)
|
@@ -21,20 +21,13 @@ module RubyEventStore
|
|
21
21
|
event_type = events_class_remapping.fetch(record.event_type) { record.event_type }
|
22
22
|
Object.const_get(event_type).new(
|
23
23
|
event_id: record.event_id,
|
24
|
-
metadata: symbolize(serializer.load(record.metadata)),
|
24
|
+
metadata: TransformKeys.symbolize(serializer.load(record.metadata)),
|
25
25
|
data: serializer.load(record.data)
|
26
26
|
)
|
27
27
|
end
|
28
28
|
|
29
29
|
private
|
30
|
-
|
31
30
|
attr_reader :serializer, :events_class_remapping
|
32
|
-
|
33
|
-
def symbolize(hash)
|
34
|
-
hash.each_with_object({}) do |(k, v), memo|
|
35
|
-
memo[k.to_sym] = v
|
36
|
-
end
|
37
|
-
end
|
38
31
|
end
|
39
32
|
end
|
40
33
|
end
|
@@ -4,31 +4,11 @@ module RubyEventStore
|
|
4
4
|
data.class.descriptor.name
|
5
5
|
end
|
6
6
|
|
7
|
-
def encode_with(coder)
|
8
|
-
coder['event_id'] = event_id
|
9
|
-
coder['metadata'] = ProtobufNestedStruct::HashMapStringValue.dump(metadata.each_with_object({}){|(k,v),h| h[k.to_s] =v })
|
10
|
-
coder['data.proto'] = data.class.encode(data)
|
11
|
-
coder['data.type'] = type
|
12
|
-
end
|
13
|
-
|
14
|
-
def init_with(coder)
|
15
|
-
@event_id = coder['event_id']
|
16
|
-
@metadata = Metadata.new
|
17
|
-
ProtobufNestedStruct::HashMapStringValue.load(coder['metadata']).each_with_object(metadata){|(k,v),meta| meta[k.to_sym] = v }
|
18
|
-
@data = pool.lookup(coder['data.type']).msgclass.decode(coder['data.proto'])
|
19
|
-
end
|
20
|
-
|
21
7
|
def ==(other_event)
|
22
8
|
other_event.instance_of?(self.class) &&
|
23
9
|
other_event.event_id.eql?(event_id) &&
|
24
10
|
other_event.data == data # https://github.com/google/protobuf/issues/4455
|
25
11
|
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def pool
|
30
|
-
Google::Protobuf::DescriptorPool.generated_pool
|
31
|
-
end
|
32
12
|
end
|
33
13
|
|
34
14
|
module Mappers
|
@@ -41,7 +21,7 @@ module RubyEventStore
|
|
41
21
|
def event_to_serialized_record(domain_event)
|
42
22
|
SerializedRecord.new(
|
43
23
|
event_id: domain_event.event_id,
|
44
|
-
metadata: ProtobufNestedStruct::HashMapStringValue.dump(domain_event.metadata
|
24
|
+
metadata: ProtobufNestedStruct::HashMapStringValue.dump(TransformKeys.stringify(domain_event.metadata)),
|
45
25
|
data: encode_data(domain_event.data),
|
46
26
|
event_type: domain_event.type
|
47
27
|
)
|
@@ -61,9 +41,7 @@ module RubyEventStore
|
|
61
41
|
attr_reader :event_id_getter, :events_class_remapping
|
62
42
|
|
63
43
|
def load_metadata(protobuf_metadata)
|
64
|
-
ProtobufNestedStruct::HashMapStringValue.load(protobuf_metadata)
|
65
|
-
meta[k.to_sym] = v
|
66
|
-
end
|
44
|
+
TransformKeys.symbolize(ProtobufNestedStruct::HashMapStringValue.load(protobuf_metadata))
|
67
45
|
end
|
68
46
|
|
69
47
|
def load_data(event_type, protobuf_data)
|
@@ -85,4 +63,4 @@ module RubyEventStore
|
|
85
63
|
end
|
86
64
|
end
|
87
65
|
end
|
88
|
-
end
|
66
|
+
end
|
@@ -43,9 +43,9 @@ module RubyEventStore
|
|
43
43
|
private
|
44
44
|
|
45
45
|
def allowed_types
|
46
|
-
[String, Integer, Float, Date, Time, TrueClass, FalseClass, nil]
|
46
|
+
[String, Integer, Float, Date, Time, TrueClass, FalseClass, nil, Hash, Array]
|
47
47
|
end
|
48
48
|
|
49
49
|
private_constant :SAFE_HASH_METHODS
|
50
50
|
end
|
51
|
-
end
|
51
|
+
end
|
@@ -977,7 +977,6 @@ module RubyEventStore
|
|
977
977
|
|
978
978
|
specify 'can store arbitrary binary data' do
|
979
979
|
skip unless test_binary
|
980
|
-
migrate_to_binary
|
981
980
|
binary = "\xB0"
|
982
981
|
expect(binary.valid_encoding?).to eq(false)
|
983
982
|
binary.force_encoding("binary")
|
@@ -1226,5 +1225,47 @@ module RubyEventStore
|
|
1226
1225
|
expect(repository.read(specification.of_type([Type3]).result).to_a).to eq([])
|
1227
1226
|
expect(repository.read(specification.of_type([Type1, Type2, Type3]).result).to_a).to eq([e1,e2,e3])
|
1228
1227
|
end
|
1228
|
+
|
1229
|
+
specify do
|
1230
|
+
stream = Stream.new('Stream A')
|
1231
|
+
dummy = Stream.new('Dummy')
|
1232
|
+
|
1233
|
+
expect(repository.count(specification.result)).to eq(0)
|
1234
|
+
(1..3).each do
|
1235
|
+
repository.append_to_stream([SRecord.new(event_type: Type1.to_s)], stream, version_any)
|
1236
|
+
end
|
1237
|
+
expect(repository.count(specification.result)).to eq(3)
|
1238
|
+
event_id = SecureRandom.uuid
|
1239
|
+
repository.append_to_stream([SRecord.new(event_type: Type1.to_s, event_id: event_id)], dummy, version_any)
|
1240
|
+
expect(repository.count(specification.result)).to eq(4)
|
1241
|
+
expect(repository.count(specification.in_batches.result)).to eq(4)
|
1242
|
+
expect(repository.count(specification.in_batches(2).result)).to eq(4)
|
1243
|
+
|
1244
|
+
expect(repository.count(specification.with_id([event_id]).result)).to eq(1)
|
1245
|
+
not_existing_uuid = SecureRandom.uuid
|
1246
|
+
expect(repository.count(specification.with_id([not_existing_uuid]).result)).to eq(0)
|
1247
|
+
|
1248
|
+
expect(repository.count(specification.stream(stream.name).result)).to eq(3)
|
1249
|
+
expect(repository.count(specification.stream('Dummy').result)).to eq(1)
|
1250
|
+
expect(repository.count(specification.stream('not-existing-stream').result)).to eq(0)
|
1251
|
+
|
1252
|
+
repository.append_to_stream([SRecord.new(event_type: Type1.to_s)], dummy, version_any)
|
1253
|
+
expect(repository.count(specification.from(:head).result)).to eq(5)
|
1254
|
+
expect(repository.count(specification.from(event_id).result)).to eq(1)
|
1255
|
+
expect(repository.count(specification.stream("Dummy").from(:head).result)).to eq(2)
|
1256
|
+
expect(repository.count(specification.stream("Dummy").from(event_id).result)).to eq(1)
|
1257
|
+
|
1258
|
+
expect(repository.count(specification.limit(100).result)).to eq(5)
|
1259
|
+
expect(repository.count(specification.limit(2).result)).to eq(2)
|
1260
|
+
|
1261
|
+
repository.append_to_stream([SRecord.new(event_type: Type2.to_s)], dummy, version_any)
|
1262
|
+
repository.append_to_stream([SRecord.new(event_type: Type3.to_s)], dummy, version_any)
|
1263
|
+
repository.append_to_stream([SRecord.new(event_type: Type3.to_s)], dummy, version_any)
|
1264
|
+
expect(repository.count(specification.of_type([Type1]).result)).to eq(5)
|
1265
|
+
expect(repository.count(specification.of_type([Type2]).result)).to eq(1)
|
1266
|
+
expect(repository.count(specification.of_type([Type3]).result)).to eq(2)
|
1267
|
+
expect(repository.count(specification.stream("Dummy").of_type([Type3]).result)).to eq(2)
|
1268
|
+
expect(repository.count(specification.stream(stream.name).of_type([Type3]).result)).to eq(0)
|
1269
|
+
end
|
1229
1270
|
end
|
1230
1271
|
end
|
@@ -91,6 +91,14 @@ module RubyEventStore
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
+
# Calculates the size of result set based on the specification build up to this point.
|
95
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
96
|
+
#
|
97
|
+
# @return [Integer] Number of events to read
|
98
|
+
def count
|
99
|
+
reader.count(result)
|
100
|
+
end
|
101
|
+
|
94
102
|
# Executes the query based on the specification built up to this point.
|
95
103
|
# Returns array of domain events.
|
96
104
|
# {http://railseventstore.org/docs/read/ Find out more}.
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module RubyEventStore
|
2
|
+
class TransformKeys
|
3
|
+
def self.stringify(data)
|
4
|
+
transform(data) {|k| k.to_s}
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.symbolize(data)
|
8
|
+
transform(data) {|k| k.to_sym}
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def self.transform(data, &block)
|
13
|
+
data.each_with_object({}) do |(k, v), h|
|
14
|
+
h[yield(k)] = case v
|
15
|
+
when Hash
|
16
|
+
transform(v, &block)
|
17
|
+
when Array
|
18
|
+
v.map{|i| Hash === i ? transform(i, &block) : i}
|
19
|
+
else
|
20
|
+
v
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/ruby_event_store.gemspec
CHANGED
@@ -25,15 +25,5 @@ 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
|
-
|
29
28
|
spec.add_dependency 'concurrent-ruby', '~> 1.0'
|
30
|
-
spec.add_development_dependency 'bundler', '~> 1.15'
|
31
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
32
|
-
spec.add_development_dependency 'rspec', '~> 3.6'
|
33
|
-
spec.add_development_dependency 'mutant-rspec', '= 0.8.17'
|
34
|
-
spec.add_development_dependency 'parser'
|
35
|
-
spec.add_development_dependency 'unparser'
|
36
|
-
spec.add_development_dependency 'astrolabe'
|
37
|
-
spec.add_development_dependency 'google-protobuf', '~> 3.5.1.2'
|
38
|
-
spec.add_development_dependency 'activesupport', '~> 5.0'
|
39
29
|
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.35.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-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -24,132 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.15'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.15'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '10.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '10.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.6'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '3.6'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: mutant-rspec
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - '='
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.8.17
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - '='
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 0.8.17
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: parser
|
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: unparser
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: astrolabe
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: google-protobuf
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 3.5.1.2
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
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'
|
153
27
|
description: Implementation of Event Store in Ruby
|
154
28
|
email:
|
155
29
|
- dev@arkency.com
|
@@ -199,6 +73,7 @@ files:
|
|
199
73
|
- lib/ruby_event_store/specification_reader.rb
|
200
74
|
- lib/ruby_event_store/specification_result.rb
|
201
75
|
- lib/ruby_event_store/stream.rb
|
76
|
+
- lib/ruby_event_store/transform_keys.rb
|
202
77
|
- lib/ruby_event_store/version.rb
|
203
78
|
- ruby_event_store.gemspec
|
204
79
|
homepage: https://railseventstore.org
|
@@ -225,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
100
|
version: '0'
|
226
101
|
requirements: []
|
227
102
|
rubyforge_project:
|
228
|
-
rubygems_version:
|
103
|
+
rubygems_version: 3.0.0.beta2
|
229
104
|
signing_key:
|
230
105
|
specification_version: 4
|
231
106
|
summary: Event Store in Ruby
|