ruby_event_store-rom 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/Makefile +2 -2
- data/lib/ruby_event_store/rom/adapters/memory/relations/stream_entries.rb +14 -10
- data/lib/ruby_event_store/rom/adapters/sql/relations/stream_entries.rb +14 -10
- data/lib/ruby_event_store/rom/event_repository.rb +10 -17
- data/lib/ruby_event_store/rom/repositories/events.rb +41 -18
- data/lib/ruby_event_store/rom/repositories/stream_entries.rb +6 -1
- data/lib/ruby_event_store/rom/version.rb +1 -1
- data/lib/ruby_event_store/spec/rom/event_repository_lint.rb +33 -29
- data/ruby_event_store-rom.gemspec +2 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 995fff6b726e0326b38e8bfbcd9be6d919b402934768e828b57cd8db164ed7a2
|
4
|
+
data.tar.gz: 8ceb98b10e4da72899199c28f8e1626f28e946140ae58c2f937d03b0600a4c68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb9acb2c016ad4bc3d5987cbd0ad07e47de32d5c07e0f3acc34a8f813221ea40099af95c34e22d9360a533e250c66b9883749b63fbe604d2c37a8c3322b82c31
|
7
|
+
data.tar.gz: 3c3ca41d2308e2a55e8fe61904b845dab7953b6586b52848d6b09182f9896a920d94e74e0e20a0b0841a50aed61b426f60464df017f1648294a38743e38b8d35
|
data/Makefile
CHANGED
@@ -60,14 +60,14 @@ test-fast: ## Run unit tests with --fail-fast
|
|
60
60
|
|
61
61
|
mutate: test ## Run mutation tests
|
62
62
|
@echo "Running mutation tests"
|
63
|
-
@DATABASE_URL=$(DATABASE_URL) bundle exec mutant --include lib \
|
63
|
+
@MUTATING=true DATABASE_URL=$(DATABASE_URL) bundle exec mutant --include lib \
|
64
64
|
$(addprefix --require ,$(REQUIRE)) \
|
65
65
|
$(addprefix --ignore-subject ,$(IGNORE)) \
|
66
66
|
--use rspec "$(SUBJECT)"
|
67
67
|
|
68
68
|
mutate-fast: ## Run mutation tests with --fail-fast
|
69
69
|
@echo "Running mutation tests with --fail-fast"
|
70
|
-
@DATABASE_URL=$(DATABASE_URL) bundle exec mutant --include lib \
|
70
|
+
@MUTATING=true DATABASE_URL=$(DATABASE_URL) bundle exec mutant --include lib \
|
71
71
|
$(addprefix --require ,$(REQUIRE)) \
|
72
72
|
$(addprefix --ignore-subject ,$(IGNORE)) \
|
73
73
|
--fail-fast \
|
@@ -26,7 +26,7 @@ module RubyEventStore
|
|
26
26
|
def take(num)
|
27
27
|
num.nil? ? self : super
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def insert(tuple)
|
31
31
|
verify_uniquness!(tuple)
|
32
32
|
super
|
@@ -35,32 +35,36 @@ module RubyEventStore
|
|
35
35
|
def delete(tuple)
|
36
36
|
super tuple.to_h
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
def by_stream(stream)
|
40
40
|
restrict(stream: normalize_stream_name(stream))
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
|
+
def by_event_id(event_id)
|
44
|
+
restrict(event_id: event_id)
|
45
|
+
end
|
46
|
+
|
43
47
|
def by_stream_and_event_id(stream, event_id)
|
44
48
|
restrict(stream: normalize_stream_name(stream), event_id: event_id).one!
|
45
49
|
end
|
46
|
-
|
50
|
+
|
47
51
|
def max_position(stream)
|
48
52
|
new(by_stream(stream).order(:position).dataset.reverse).project(:position).take(1).one
|
49
53
|
end
|
50
|
-
|
54
|
+
|
51
55
|
DIRECTION_MAP = {
|
52
56
|
forward: [false, :>],
|
53
57
|
backward: [true, :<]
|
54
58
|
}.freeze
|
55
|
-
|
59
|
+
|
56
60
|
def ordered(direction, stream, offset_entry_id = nil)
|
57
61
|
reverse, operator = DIRECTION_MAP[direction]
|
58
|
-
|
62
|
+
|
59
63
|
raise ArgumentError, 'Direction must be :forward or :backward' if order.nil?
|
60
|
-
|
64
|
+
|
61
65
|
order_columns = %i[position id]
|
62
66
|
order_columns.delete(:position) if stream.global?
|
63
|
-
|
67
|
+
|
64
68
|
query = by_stream(stream)
|
65
69
|
query = query.restrict { |tuple| tuple[:id].public_send(operator, offset_entry_id) } if offset_entry_id
|
66
70
|
query = query.order(*order_columns)
|
@@ -68,7 +72,7 @@ module RubyEventStore
|
|
68
72
|
|
69
73
|
query
|
70
74
|
end
|
71
|
-
|
75
|
+
|
72
76
|
private
|
73
77
|
|
74
78
|
# Verifies uniqueness of [stream, event_id] and [stream, position]
|
@@ -5,48 +5,52 @@ module RubyEventStore
|
|
5
5
|
class StreamEntries < ::ROM::Relation[:sql]
|
6
6
|
schema(:event_store_events_in_streams, as: :stream_entries, infer: true) do
|
7
7
|
attribute :created_at, ::ROM::Types::Strict::Time.default { Time.now }
|
8
|
-
|
8
|
+
|
9
9
|
associations do
|
10
10
|
belongs_to :events, as: :event, foreign_key: :event_id
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
alias_method :take, :limit
|
15
|
-
|
15
|
+
|
16
16
|
SERIALIZED_GLOBAL_STREAM_NAME = 'all'.freeze
|
17
17
|
|
18
18
|
def by_stream(stream)
|
19
19
|
where(stream: normalize_stream_name(stream))
|
20
20
|
end
|
21
21
|
|
22
|
+
def by_event_id(event_id)
|
23
|
+
where(event_id: event_id)
|
24
|
+
end
|
25
|
+
|
22
26
|
def by_stream_and_event_id(stream, event_id)
|
23
27
|
where(stream: normalize_stream_name(stream), event_id: event_id).one!
|
24
28
|
end
|
25
|
-
|
29
|
+
|
26
30
|
def max_position(stream)
|
27
31
|
by_stream(stream).select(:position).order(Sequel.desc(:position)).first
|
28
32
|
end
|
29
|
-
|
33
|
+
|
30
34
|
DIRECTION_MAP = {
|
31
35
|
forward: [:asc, :>],
|
32
36
|
backward: [:desc, :<]
|
33
37
|
}.freeze
|
34
|
-
|
38
|
+
|
35
39
|
def ordered(direction, stream, offset_entry_id = nil)
|
36
40
|
order, operator = DIRECTION_MAP[direction]
|
37
|
-
|
41
|
+
|
38
42
|
raise ArgumentError, 'Direction must be :forward or :backward' if order.nil?
|
39
|
-
|
43
|
+
|
40
44
|
order_columns = %i[position id]
|
41
45
|
order_columns.delete(:position) if stream.global?
|
42
|
-
|
46
|
+
|
43
47
|
query = by_stream(stream)
|
44
48
|
query = query.where { id.public_send(operator, offset_entry_id) } if offset_entry_id
|
45
49
|
query.order { |r| order_columns.map { |c| r[:stream_entries][c].public_send(order) } }
|
46
50
|
end
|
47
|
-
|
51
|
+
|
48
52
|
private
|
49
|
-
|
53
|
+
|
50
54
|
def normalize_stream_name(stream)
|
51
55
|
stream.global? ? SERIALIZED_GLOBAL_STREAM_NAME : stream.name
|
52
56
|
end
|
@@ -11,7 +11,7 @@ module RubyEventStore
|
|
11
11
|
|
12
12
|
def initialize(rom: ROM.env)
|
13
13
|
raise ArgumentError, "Must specify rom" unless rom && rom.instance_of?(Env)
|
14
|
-
|
14
|
+
|
15
15
|
@rom = rom
|
16
16
|
@events = Repositories::Events.new(rom.container)
|
17
17
|
@stream_entries = Repositories::StreamEntries.new(rom.container)
|
@@ -72,13 +72,7 @@ module RubyEventStore
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def last_stream_event(stream)
|
75
|
-
@events.
|
76
|
-
:backward,
|
77
|
-
stream,
|
78
|
-
from: :head,
|
79
|
-
limit: 1,
|
80
|
-
batch_size: nil
|
81
|
-
).first
|
75
|
+
@events.last_stream_event(stream)
|
82
76
|
end
|
83
77
|
|
84
78
|
def read_event(event_id)
|
@@ -88,15 +82,14 @@ module RubyEventStore
|
|
88
82
|
end
|
89
83
|
|
90
84
|
def read(specification)
|
91
|
-
raise ReservedInternalName if specification.
|
92
|
-
|
93
|
-
@events.read(
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
)
|
85
|
+
raise ReservedInternalName if specification.stream.name.eql?(@stream_entries.stream_entries.class::SERIALIZED_GLOBAL_STREAM_NAME)
|
86
|
+
|
87
|
+
@events.read(specification)
|
88
|
+
end
|
89
|
+
|
90
|
+
def streams_of(event_id)
|
91
|
+
@stream_entries.streams_of(event_id)
|
92
|
+
.map{|name| Stream.new(name)}
|
100
93
|
end
|
101
94
|
|
102
95
|
private
|
@@ -35,31 +35,54 @@ module RubyEventStore
|
|
35
35
|
events.map_with(:event_to_serialized_record).by_pk(event_id).one!
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
38
|
+
def last_stream_event(stream)
|
39
|
+
query = stream_entries.ordered(:backward, stream)
|
40
|
+
query = query_builder(query, limit: 1)
|
41
|
+
query.first
|
42
|
+
end
|
43
|
+
|
44
|
+
def read(specification)
|
45
|
+
unless specification.head?
|
46
|
+
offset_entry_id = stream_entries.by_stream_and_event_id(specification.stream, specification.start).fetch(:id)
|
41
47
|
end
|
42
48
|
|
43
|
-
|
49
|
+
direction = specification.forward? ? :forward : :backward
|
50
|
+
limit = specification.limit if specification.limit?
|
51
|
+
if specification.last? && specification.head?
|
52
|
+
direction = specification.forward? ? :backward : :forward
|
53
|
+
end
|
54
|
+
|
55
|
+
query = stream_entries.ordered(direction, specification.stream, offset_entry_id)
|
56
|
+
|
57
|
+
if specification.batched?
|
44
58
|
reader = ->(offset, limit) do
|
45
|
-
|
46
|
-
.ordered(direction, stream, offset_entry_id)
|
47
|
-
.offset(offset)
|
48
|
-
.take(limit)
|
49
|
-
.combine(:event)
|
50
|
-
.map_with(:stream_entry_to_serialized_record, auto_struct: false)
|
51
|
-
.to_ary
|
59
|
+
query_builder(query, offset: offset, limit: limit).to_ary
|
52
60
|
end
|
53
|
-
BatchEnumerator.new(batch_size, limit || Float::INFINITY, reader).each
|
61
|
+
BatchEnumerator.new(specification.batch_size, limit || Float::INFINITY, reader).each
|
54
62
|
else
|
55
|
-
|
56
|
-
|
57
|
-
.
|
58
|
-
|
59
|
-
.
|
60
|
-
|
63
|
+
query = query_builder(query, limit: limit)
|
64
|
+
if specification.head?
|
65
|
+
specification.first? || specification.last? ? query.first : query.each
|
66
|
+
else
|
67
|
+
if specification.last?
|
68
|
+
query.to_ary.last
|
69
|
+
else
|
70
|
+
specification.first? ? query.first : query.each
|
71
|
+
end
|
72
|
+
end
|
61
73
|
end
|
62
74
|
end
|
75
|
+
|
76
|
+
protected
|
77
|
+
|
78
|
+
def query_builder(query, offset: nil, limit: nil)
|
79
|
+
query = query.offset(offset) if offset
|
80
|
+
query = query.take(limit) if limit
|
81
|
+
|
82
|
+
query
|
83
|
+
.combine(:event)
|
84
|
+
.map_with(:stream_entry_to_serialized_record, auto_struct: false)
|
85
|
+
end
|
63
86
|
end
|
64
87
|
end
|
65
88
|
end
|
@@ -14,7 +14,7 @@ module RubyEventStore
|
|
14
14
|
|
15
15
|
def create_changeset(event_ids, stream, resolved_version, global_stream: nil)
|
16
16
|
tuples = []
|
17
|
-
|
17
|
+
|
18
18
|
event_ids.each_with_index do |event_id, index|
|
19
19
|
tuples << {
|
20
20
|
stream: stream.name,
|
@@ -41,6 +41,11 @@ module RubyEventStore
|
|
41
41
|
(stream_entries.max_position(stream) || {})[:position]
|
42
42
|
})
|
43
43
|
end
|
44
|
+
|
45
|
+
def streams_of(event_id)
|
46
|
+
stream_entries.by_event_id(event_id).map{|e| e[:stream]}
|
47
|
+
.reject{|s| s == stream_entries.class::SERIALIZED_GLOBAL_STREAM_NAME}
|
48
|
+
end
|
44
49
|
end
|
45
50
|
end
|
46
51
|
end
|
@@ -18,11 +18,15 @@ module RubyEventStore::ROM
|
|
18
18
|
let(:test_expected_version_auto) { true }
|
19
19
|
let(:test_link_events_to_stream) { true }
|
20
20
|
let(:test_binary) { false }
|
21
|
+
let(:test_change) { false }
|
21
22
|
|
22
23
|
let(:default_stream) { RubyEventStore::Stream.new('stream') }
|
23
24
|
let(:global_stream) { RubyEventStore::Stream.new('all') }
|
24
25
|
let(:mapper) { RubyEventStore::Mappers::NullMapper.new }
|
25
|
-
|
26
|
+
|
27
|
+
let(:reader) { RubyEventStore::SpecificationReader.new(repository, mapper) }
|
28
|
+
let(:specification) { RubyEventStore::Specification.new(reader) }
|
29
|
+
|
26
30
|
it_behaves_like :event_repository, repository_class
|
27
31
|
|
28
32
|
specify "#initialize requires ROM::Env" do
|
@@ -45,80 +49,80 @@ module RubyEventStore::ROM
|
|
45
49
|
|
46
50
|
specify "all considered internal detail" do
|
47
51
|
repository.append_to_stream(
|
48
|
-
[SRecord.new],
|
52
|
+
[RubyEventStore::SRecord.new],
|
49
53
|
RubyEventStore::Stream.new(RubyEventStore::GLOBAL_STREAM),
|
50
54
|
RubyEventStore::ExpectedVersion.any
|
51
55
|
)
|
52
56
|
reserved_stream = RubyEventStore::Stream.new("all")
|
53
57
|
|
54
|
-
expect{ repository.read(
|
55
|
-
expect{ repository.read(
|
56
|
-
expect{ repository.read(
|
57
|
-
expect{ repository.read(
|
58
|
+
expect{ repository.read(specification.stream("all").result) }.to raise_error(RubyEventStore::ReservedInternalName)
|
59
|
+
expect{ repository.read(specification.stream("all").backward.result) }.to raise_error(RubyEventStore::ReservedInternalName)
|
60
|
+
expect{ repository.read(specification.stream("all").from(:head).limit(5).result) }.to raise_error(RubyEventStore::ReservedInternalName)
|
61
|
+
expect{ repository.read(specification.stream("all").from(:head).limit(5).backward.result) }.to raise_error(RubyEventStore::ReservedInternalName)
|
58
62
|
end
|
59
63
|
|
60
64
|
specify "explicit sorting by position rather than accidental" do
|
61
65
|
events = [
|
62
|
-
SRecord.new(
|
66
|
+
RubyEventStore::SRecord.new(
|
63
67
|
event_id: u1 = SecureRandom.uuid,
|
64
68
|
data: YAML.dump({}),
|
65
69
|
metadata: YAML.dump({}),
|
66
70
|
event_type: "TestDomainEvent"
|
67
71
|
),
|
68
|
-
SRecord.new(
|
72
|
+
RubyEventStore::SRecord.new(
|
69
73
|
event_id: u2 = SecureRandom.uuid,
|
70
74
|
data: YAML.dump({}),
|
71
75
|
metadata: YAML.dump({}),
|
72
76
|
event_type: "TestDomainEvent"
|
73
77
|
),
|
74
|
-
SRecord.new(
|
78
|
+
RubyEventStore::SRecord.new(
|
75
79
|
event_id: u3 = SecureRandom.uuid,
|
76
80
|
data: YAML.dump({}),
|
77
81
|
metadata: YAML.dump({}),
|
78
82
|
event_type: "TestDomainEvent"
|
79
83
|
)
|
80
84
|
]
|
81
|
-
|
85
|
+
|
82
86
|
repo = Repositories::Events.new(container)
|
83
87
|
repo.create_changeset(events).commit
|
84
88
|
|
85
89
|
expect(repo.events.to_a.size).to eq(3)
|
86
|
-
|
90
|
+
|
87
91
|
repo.stream_entries.changeset(Repositories::StreamEntries::Create, [
|
88
92
|
{stream: default_stream.name, event_id: events[1].event_id, position: 1},
|
89
93
|
{stream: default_stream.name, event_id: events[0].event_id, position: 0},
|
90
94
|
{stream: default_stream.name, event_id: events[2].event_id, position: 2}
|
91
95
|
]).commit
|
92
|
-
|
96
|
+
|
93
97
|
expect(repo.stream_entries.to_a.size).to eq(3)
|
94
|
-
|
98
|
+
|
95
99
|
# ActiveRecord::Schema.define do
|
96
100
|
# self.verbose = false
|
97
101
|
# remove_index :event_store_events_in_streams, [:stream, :position]
|
98
102
|
# end
|
99
103
|
|
100
|
-
expect(repository.read(
|
101
|
-
expect(repository.read(
|
104
|
+
expect(repository.read(specification.stream("stream").from(:head).limit(3).result).map(&:event_id)).to eq([u1,u2,u3])
|
105
|
+
expect(repository.read(specification.stream("stream").result).map(&:event_id)).to eq([u1,u2,u3])
|
102
106
|
|
103
|
-
expect(repository.read(
|
104
|
-
expect(repository.read(
|
107
|
+
expect(repository.read(specification.stream("stream").backward.from(:head).limit(3).result).map(&:event_id)).to eq([u3,u2,u1])
|
108
|
+
expect(repository.read(specification.stream("stream").backward.result).map(&:event_id)).to eq([u3,u2,u1])
|
105
109
|
end
|
106
110
|
|
107
111
|
specify "explicit sorting by id rather than accidental for all events" do
|
108
112
|
events = [
|
109
|
-
SRecord.new(
|
113
|
+
RubyEventStore::SRecord.new(
|
110
114
|
event_id: u1 = SecureRandom.uuid,
|
111
115
|
data: YAML.dump({}),
|
112
116
|
metadata: YAML.dump({}),
|
113
117
|
event_type: "TestDomainEvent"
|
114
118
|
),
|
115
|
-
SRecord.new(
|
119
|
+
RubyEventStore::SRecord.new(
|
116
120
|
event_id: u2 = SecureRandom.uuid,
|
117
121
|
data: YAML.dump({}),
|
118
122
|
metadata: YAML.dump({}),
|
119
123
|
event_type: "TestDomainEvent"
|
120
124
|
),
|
121
|
-
SRecord.new(
|
125
|
+
RubyEventStore::SRecord.new(
|
122
126
|
event_id: u3 = SecureRandom.uuid,
|
123
127
|
data: YAML.dump({}),
|
124
128
|
metadata: YAML.dump({}),
|
@@ -130,37 +134,37 @@ module RubyEventStore::ROM
|
|
130
134
|
repo.create_changeset(events).commit
|
131
135
|
|
132
136
|
expect(repo.events.to_a.size).to eq(3)
|
133
|
-
|
137
|
+
|
134
138
|
repo.stream_entries.changeset(Repositories::StreamEntries::Create, [
|
135
139
|
{stream: global_stream.name, event_id: events[0].event_id, position: 1},
|
136
140
|
{stream: global_stream.name, event_id: events[1].event_id, position: 0},
|
137
141
|
{stream: global_stream.name, event_id: events[2].event_id, position: 2}
|
138
142
|
]).commit
|
139
|
-
|
143
|
+
|
140
144
|
expect(repo.stream_entries.to_a.size).to eq(3)
|
141
|
-
|
142
|
-
expect(repository.read(
|
143
|
-
expect(repository.read(
|
145
|
+
|
146
|
+
expect(repository.read(specification.from(:head).limit(3).result).map(&:event_id)).to eq([u1,u2,u3])
|
147
|
+
expect(repository.read(specification.from(:head).limit(3).backward.result).map(&:event_id)).to eq([u3,u2,u1])
|
144
148
|
end
|
145
149
|
|
146
150
|
specify "nested transaction - events still not persisted if append failed" do
|
147
151
|
repository.append_to_stream([
|
148
|
-
event = SRecord.new(event_id: SecureRandom.uuid),
|
152
|
+
event = RubyEventStore::SRecord.new(event_id: SecureRandom.uuid),
|
149
153
|
], default_stream, RubyEventStore::ExpectedVersion.none)
|
150
154
|
|
151
155
|
env.unit_of_work do
|
152
156
|
expect do
|
153
157
|
repository.append_to_stream([
|
154
|
-
SRecord.new(
|
158
|
+
RubyEventStore::SRecord.new(
|
155
159
|
event_id: '9bedf448-e4d0-41a3-a8cd-f94aec7aa763'
|
156
160
|
),
|
157
161
|
], default_stream, RubyEventStore::ExpectedVersion.none)
|
158
162
|
end.to raise_error(RubyEventStore::WrongExpectedEventVersion)
|
159
163
|
expect(repository.has_event?('9bedf448-e4d0-41a3-a8cd-f94aec7aa763')).to be_falsey
|
160
|
-
expect(repository.read(
|
164
|
+
expect(repository.read(specification.from(:head).limit(2).result).to_a).to eq([event])
|
161
165
|
end
|
162
166
|
expect(repository.has_event?('9bedf448-e4d0-41a3-a8cd-f94aec7aa763')).to be_falsey
|
163
|
-
expect(repository.read(
|
167
|
+
expect(repository.read(specification.from(:head).limit(2).result).to_a).to eq([event])
|
164
168
|
end
|
165
169
|
|
166
170
|
def cleanup_concurrency_test
|
@@ -36,9 +36,10 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_development_dependency 'childprocess'
|
37
37
|
spec.add_development_dependency 'google-protobuf', '~> 3.5.1.2'
|
38
38
|
|
39
|
-
spec.add_dependency 'ruby_event_store', '= 0.
|
39
|
+
spec.add_dependency 'ruby_event_store', '= 0.32.0'
|
40
40
|
spec.add_dependency 'sequel', '>= 4.49'
|
41
41
|
spec.add_dependency 'dry-types', '~> 0.12.2'
|
42
|
+
spec.add_dependency 'dry-initializer', '= 2.5.0'
|
42
43
|
spec.add_dependency 'rom-sql', '>= 2.4'
|
43
44
|
spec.add_dependency 'rom-repository', '>= 2.0'
|
44
45
|
spec.add_dependency 'rom-changeset', '>= 1.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_event_store-rom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.32.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Van Horn
|
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: bundler
|
@@ -156,14 +156,14 @@ dependencies:
|
|
156
156
|
requirements:
|
157
157
|
- - '='
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
159
|
+
version: 0.32.0
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - '='
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
166
|
+
version: 0.32.0
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: sequel
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +192,20 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: 0.12.2
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: dry-initializer
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - '='
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 2.5.0
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - '='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 2.5.0
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
210
|
name: rom-sql
|
197
211
|
requirement: !ruby/object:Gem::Requirement
|