rom 0.6.2 → 0.7.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/.rspec +1 -0
- data/.rubocop.yml +9 -0
- data/CHANGELOG.md +34 -0
- data/CONTRIBUTING.md +1 -0
- data/Gemfile +1 -1
- data/README.md +12 -7
- data/lib/rom.rb +8 -0
- data/lib/rom/command.rb +19 -0
- data/lib/rom/commands/abstract.rb +6 -1
- data/lib/rom/commands/composite.rb +1 -52
- data/lib/rom/commands/update.rb +4 -1
- data/lib/rom/constants.rb +1 -0
- data/lib/rom/env.rb +3 -25
- data/lib/rom/global.rb +23 -0
- data/lib/rom/global/plugin_dsl.rb +47 -0
- data/lib/rom/header.rb +19 -8
- data/lib/rom/header/attribute.rb +14 -2
- data/lib/rom/lint/enumerable_dataset.rb +3 -1
- data/lib/rom/lint/repository.rb +5 -5
- data/lib/rom/mapper.rb +2 -1
- data/lib/rom/mapper/attribute_dsl.rb +86 -13
- data/lib/rom/mapper/dsl.rb +20 -1
- data/lib/rom/memory/commands.rb +3 -1
- data/lib/rom/memory/dataset.rb +1 -1
- data/lib/rom/memory/relation.rb +1 -1
- data/lib/rom/pipeline.rb +91 -0
- data/lib/rom/plugin.rb +31 -0
- data/lib/rom/plugin_registry.rb +134 -0
- data/lib/rom/plugins/relation/registry_reader.rb +30 -0
- data/lib/rom/processor/transproc.rb +78 -3
- data/lib/rom/relation/class_interface.rb +14 -2
- data/lib/rom/relation/composite.rb +9 -97
- data/lib/rom/relation/graph.rb +76 -0
- data/lib/rom/relation/lazy.rb +15 -63
- data/lib/rom/relation/materializable.rb +66 -0
- data/lib/rom/setup/finalize.rb +16 -5
- data/lib/rom/setup_dsl/mapper_dsl.rb +10 -2
- data/lib/rom/setup_dsl/setup.rb +1 -1
- data/lib/rom/support/array_dataset.rb +7 -4
- data/lib/rom/support/data_proxy.rb +7 -7
- data/lib/rom/support/deprecations.rb +17 -0
- data/lib/rom/support/enumerable_dataset.rb +10 -3
- data/lib/rom/support/inflector.rb +1 -1
- data/lib/rom/version.rb +1 -1
- data/rom.gemspec +1 -1
- data/spec/integration/commands/create_spec.rb +3 -3
- data/spec/integration/commands/update_spec.rb +24 -4
- data/spec/integration/mappers/combine_spec.rb +107 -0
- data/spec/integration/mappers/registering_custom_mappers_spec.rb +29 -0
- data/spec/integration/mappers/reusing_mappers_spec.rb +22 -0
- data/spec/integration/mappers/unwrap_spec.rb +98 -0
- data/spec/integration/multi_repo_spec.rb +2 -2
- data/spec/integration/repositories/extending_relations_spec.rb +9 -0
- data/spec/integration/setup_spec.rb +2 -2
- data/spec/shared/enumerable_dataset.rb +4 -1
- data/spec/shared/materializable.rb +34 -0
- data/spec/shared/proxy.rb +0 -0
- data/spec/spec_helper.rb +6 -2
- data/spec/support/mutant.rb +9 -6
- data/spec/unit/rom/commands_spec.rb +3 -3
- data/spec/unit/rom/header_spec.rb +2 -2
- data/spec/unit/rom/mapper/dsl_spec.rb +102 -1
- data/spec/unit/rom/memory/dataset_spec.rb +10 -33
- data/spec/unit/rom/memory/relation_spec.rb +63 -0
- data/spec/unit/rom/memory/storage_spec.rb +2 -2
- data/spec/unit/rom/plugin_spec.rb +121 -0
- data/spec/unit/rom/processor/transproc_spec.rb +47 -6
- data/spec/unit/rom/relation/composite_spec.rb +3 -1
- data/spec/unit/rom/relation/graph_spec.rb +78 -0
- data/spec/unit/rom/relation/lazy/combine_spec.rb +130 -0
- data/spec/unit/rom/relation/lazy_spec.rb +3 -1
- data/spec/unit/rom/relation/loaded_spec.rb +3 -1
- data/spec/unit/rom/setup_spec.rb +8 -8
- data/spec/unit/rom/support/array_dataset_spec.rb +3 -1
- data/spec/unit/rom/support/class_builder_spec.rb +2 -2
- metadata +24 -7
- data/lib/rom/relation/registry_reader.rb +0 -23
@@ -4,7 +4,8 @@ require 'virtus'
|
|
4
4
|
describe ROM::Processor::Transproc do
|
5
5
|
subject(:transproc) { ROM::Processor::Transproc.build(header) }
|
6
6
|
|
7
|
-
let(:header) { ROM::Header.coerce(attributes) }
|
7
|
+
let(:header) { ROM::Header.coerce(attributes, options) }
|
8
|
+
let(:options) { {} }
|
8
9
|
|
9
10
|
context 'no mapping' do
|
10
11
|
let(:attributes) { [[:name]] }
|
@@ -27,7 +28,7 @@ describe ROM::Processor::Transproc do
|
|
27
28
|
end
|
28
29
|
|
29
30
|
context 'mapping to object' do
|
30
|
-
let(:
|
31
|
+
let(:options) { { model: model } }
|
31
32
|
|
32
33
|
let(:model) do
|
33
34
|
Class.new do
|
@@ -47,14 +48,53 @@ describe ROM::Processor::Transproc do
|
|
47
48
|
end
|
48
49
|
|
49
50
|
context 'renaming keys' do
|
50
|
-
let(:attributes)
|
51
|
-
|
51
|
+
let(:attributes) do
|
52
|
+
[[:name, from: 'name']]
|
53
|
+
end
|
54
|
+
|
55
|
+
let(:options) do
|
56
|
+
{ reject_keys: true }
|
57
|
+
end
|
58
|
+
|
59
|
+
let(:relation) do
|
60
|
+
[
|
61
|
+
{ 'name' => 'Jane', 'age' => 21 }, { 'name' => 'Joe', age: 22 }
|
62
|
+
]
|
63
|
+
end
|
52
64
|
|
53
|
-
it 'returns tuples with
|
65
|
+
it 'returns tuples with rejected keys' do
|
54
66
|
expect(transproc[relation]).to eql([{ name: 'Jane' }, { name: 'Joe' }])
|
55
67
|
end
|
56
68
|
end
|
57
69
|
|
70
|
+
describe 'rejecting keys' do
|
71
|
+
let(:options) { { reject_keys: true } }
|
72
|
+
|
73
|
+
let(:attributes) do
|
74
|
+
[
|
75
|
+
['name'],
|
76
|
+
['tasks', type: :array, group: true, header: [['title']]]
|
77
|
+
]
|
78
|
+
end
|
79
|
+
|
80
|
+
let(:relation) do
|
81
|
+
[
|
82
|
+
{ 'name' => 'Jane', 'age' => 21, 'title' => 'Task One' },
|
83
|
+
{ 'name' => 'Jane', 'age' => 21, 'title' => 'Task Two' },
|
84
|
+
{ 'name' => 'Joe', 'age' => 22, 'title' => 'Task One' }
|
85
|
+
]
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'returns tuples with unknown keys rejected' do
|
89
|
+
expect(transproc[relation]).to eql([
|
90
|
+
{ 'name' => 'Jane',
|
91
|
+
'tasks' => [{ 'title' => 'Task One' }, { 'title' => 'Task Two' }] },
|
92
|
+
{ 'name' => 'Joe',
|
93
|
+
'tasks' => [{ 'title' => 'Task One' }] }
|
94
|
+
])
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
58
98
|
context 'mapping nested hash' do
|
59
99
|
let(:relation) do
|
60
100
|
[
|
@@ -234,7 +274,8 @@ describe ROM::Processor::Transproc do
|
|
234
274
|
[
|
235
275
|
{ 'name' => 'Jane', 'title' => 'Task One' },
|
236
276
|
{ 'name' => 'Jane', 'title' => 'Task Two' },
|
237
|
-
{ 'name' => 'Joe', 'title' => 'Task One' }
|
277
|
+
{ 'name' => 'Joe', 'title' => 'Task One' },
|
278
|
+
{ 'name' => 'Joe', 'title' => nil }
|
238
279
|
]
|
239
280
|
end
|
240
281
|
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ROM::Relation::Graph do
|
4
|
+
subject(:graph) { ROM::Relation::Graph.new(users, [tasks.for_users]) }
|
5
|
+
|
6
|
+
include_context 'users and tasks'
|
7
|
+
|
8
|
+
it_behaves_like 'materializable relation' do
|
9
|
+
let(:mapper) do
|
10
|
+
Transproc(:combine, [[:tasks, name: :name]])
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:relation) do
|
14
|
+
ROM::Relation::Graph.new(users.by_name('Jane'), [tasks.for_users]) >> mapper
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
before do
|
19
|
+
setup.relation(:users) do
|
20
|
+
def by_name(name)
|
21
|
+
restrict(name: name)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
setup.relation(:tasks) do
|
26
|
+
def for_users(users)
|
27
|
+
self
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
let(:users) { rom.relation(:users) }
|
33
|
+
let(:tasks) { rom.relation(:tasks) }
|
34
|
+
|
35
|
+
describe '#method_missing' do
|
36
|
+
it 'responds to the root methods' do
|
37
|
+
expect(graph).to respond_to(:by_name)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'forwards methods to the root and decorates response' do
|
41
|
+
expect(graph.by_name('Jane')).to be_instance_of(ROM::Relation::Graph)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'returns original response from the root' do
|
45
|
+
expect(graph.mappers).to eql(users.mappers)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'raises method error' do
|
49
|
+
expect { graph.not_here }.to raise_error(NoMethodError, /not_here/)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#call' do
|
54
|
+
it 'materializes relations' do
|
55
|
+
expect(graph.call).to match_array([
|
56
|
+
rom.relations.users,
|
57
|
+
[rom.relations.tasks]
|
58
|
+
])
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#to_a' do
|
63
|
+
it 'coerces to an array' do
|
64
|
+
expect(graph).to match_array([
|
65
|
+
users.to_a,
|
66
|
+
[tasks.for_users(users).to_a]
|
67
|
+
])
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'returns empty arrays when left was empty' do
|
71
|
+
graph = ROM::Relation::Graph.new(users.by_name('Not here'), [tasks.for_users])
|
72
|
+
|
73
|
+
expect(graph).to match_array([
|
74
|
+
[], [ROM::Relation::Loaded.new(tasks.for_users, [])]
|
75
|
+
])
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ROM::Relation::Lazy, '#combine' do
|
4
|
+
include_context 'users and tasks'
|
5
|
+
|
6
|
+
before do
|
7
|
+
setup.relation(:users) do
|
8
|
+
def by_name(name)
|
9
|
+
restrict(name: name)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
setup.relation(:tasks) do
|
14
|
+
def for_users(users)
|
15
|
+
names = users.map { |user| user[:name] }
|
16
|
+
restrict { |task| names.include?(task[:name]) }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
setup.relation(:tags) do
|
21
|
+
forward :map
|
22
|
+
|
23
|
+
def for_tasks(tasks)
|
24
|
+
titles = tasks.map { |task| task[:title] }
|
25
|
+
restrict { |tag| titles.include?(tag[:task]) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def for_users(users)
|
29
|
+
user_tasks = tasks.for_users(users)
|
30
|
+
|
31
|
+
for_tasks(user_tasks).map { |tag|
|
32
|
+
tag.merge(user: user_tasks.detect { |task|
|
33
|
+
task[:title] == tag[:task]
|
34
|
+
} [:name])
|
35
|
+
}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
setup.repositories[:default].dataset(:tags).insert(task: 'be cool', name: 'red')
|
40
|
+
setup.repositories[:default].dataset(:tags).insert(task: 'be cool', name: 'green')
|
41
|
+
end
|
42
|
+
|
43
|
+
let(:users) { rom.relation(:users) }
|
44
|
+
let(:tasks) { rom.relation(:tasks) }
|
45
|
+
let(:tags) { rom.relation(:tags) }
|
46
|
+
|
47
|
+
let(:map_users) {
|
48
|
+
proc { |users, tasks|
|
49
|
+
users.map { |user|
|
50
|
+
user.merge(tasks: tasks.select { |task| task[:name] == user[:name] })
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
let(:map_tasks) {
|
56
|
+
proc { |(tasks, children)|
|
57
|
+
tags = children.first
|
58
|
+
|
59
|
+
tasks.map { |task|
|
60
|
+
task.merge(tags: tags.select { |tag| tag[:task] == task[:title] })
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
let(:map_user_with_tasks_and_tags) {
|
66
|
+
proc { |users, (tasks, tags)|
|
67
|
+
users.map { |user|
|
68
|
+
user_tasks = tasks.select { |task| task[:name] == user[:name] }
|
69
|
+
|
70
|
+
user_tags = tasks.flat_map { |task|
|
71
|
+
tags.select { |tag| tag[:task] == task[:title] }
|
72
|
+
}
|
73
|
+
|
74
|
+
user.merge(
|
75
|
+
tasks: user_tasks,
|
76
|
+
tags: user_tags
|
77
|
+
)
|
78
|
+
}
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
let(:map_user_with_tasks) {
|
83
|
+
proc { |users, children|
|
84
|
+
map_users[users, map_tasks[children.first]]
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
it 'supports more than one eagerly-loaded relation' do
|
89
|
+
expected = [
|
90
|
+
{
|
91
|
+
name: 'Jane',
|
92
|
+
email: 'jane@doe.org',
|
93
|
+
tasks: [
|
94
|
+
{ name: 'Jane', title: 'be cool', priority: 2 }
|
95
|
+
],
|
96
|
+
tags: [
|
97
|
+
{ task: 'be cool', name: 'red', user: 'Jane' },
|
98
|
+
{ task: 'be cool', name: 'green', user: 'Jane' }
|
99
|
+
]
|
100
|
+
}
|
101
|
+
]
|
102
|
+
|
103
|
+
user_with_tasks_and_tags = users.by_name('Jane')
|
104
|
+
.combine(tasks.for_users, tags.for_users)
|
105
|
+
|
106
|
+
result = user_with_tasks_and_tags >> map_user_with_tasks_and_tags
|
107
|
+
|
108
|
+
expect(result).to match_array(expected)
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'supports nested eager-loading' do
|
112
|
+
expected = [
|
113
|
+
{
|
114
|
+
name: 'Jane', email: 'jane@doe.org', tasks: [
|
115
|
+
{ name: 'Jane', title: 'be cool', priority: 2, tags: [
|
116
|
+
{ task: 'be cool', name: 'red' },
|
117
|
+
{ task: 'be cool', name: 'green' }
|
118
|
+
] }
|
119
|
+
]
|
120
|
+
}
|
121
|
+
]
|
122
|
+
|
123
|
+
user_with_tasks = users.by_name('Jane')
|
124
|
+
.combine(tasks.for_users.combine(tags.for_tasks))
|
125
|
+
|
126
|
+
result = user_with_tasks >> map_user_with_tasks
|
127
|
+
|
128
|
+
expect(result).to match_array(expected)
|
129
|
+
end
|
130
|
+
end
|
@@ -138,7 +138,9 @@ describe ROM::Relation::Lazy do
|
|
138
138
|
describe '#each' do
|
139
139
|
it 'yields relation tuples' do
|
140
140
|
result = []
|
141
|
-
users.each
|
141
|
+
users.each do |tuple|
|
142
|
+
result << tuple
|
143
|
+
end
|
142
144
|
expect(result).to match_array([
|
143
145
|
{ name: 'Jane', email: 'jane@doe.org' },
|
144
146
|
{ name: 'Joe', email: 'joe@doe.org' }
|
@@ -10,7 +10,9 @@ describe ROM::Relation::Loaded do
|
|
10
10
|
describe '#each' do
|
11
11
|
it 'yields tuples from relation' do
|
12
12
|
result = []
|
13
|
-
users.each
|
13
|
+
users.each do |tuple|
|
14
|
+
result << tuple
|
15
|
+
end
|
14
16
|
expect(result).to match_array([
|
15
17
|
{ name: 'Jane', email: 'jane@doe.org' },
|
16
18
|
{ name: 'Joe', email: 'joe@doe.org' }
|
data/spec/unit/rom/setup_spec.rb
CHANGED
@@ -36,23 +36,23 @@ describe ROM::Setup do
|
|
36
36
|
it 'can register multiple relations with same dataset' do
|
37
37
|
setup = ROM.setup(:memory)
|
38
38
|
|
39
|
-
Class.new(ROM::Relation[:memory])
|
39
|
+
Class.new(ROM::Relation[:memory]) do
|
40
40
|
dataset :fruits
|
41
41
|
register_as :apples
|
42
42
|
|
43
43
|
def apple?
|
44
44
|
true
|
45
45
|
end
|
46
|
-
|
46
|
+
end
|
47
47
|
|
48
|
-
Class.new(ROM::Relation[:memory])
|
48
|
+
Class.new(ROM::Relation[:memory]) do
|
49
49
|
dataset :fruits
|
50
50
|
register_as :oranges
|
51
51
|
|
52
52
|
def orange?
|
53
53
|
true
|
54
54
|
end
|
55
|
-
|
55
|
+
end
|
56
56
|
|
57
57
|
rom = setup.finalize
|
58
58
|
|
@@ -64,15 +64,15 @@ describe ROM::Setup do
|
|
64
64
|
it "raises an error when registering relations with the same `register_as`" do
|
65
65
|
setup = ROM.setup(:memory)
|
66
66
|
|
67
|
-
Class.new(ROM::Relation[:memory])
|
67
|
+
Class.new(ROM::Relation[:memory]) do
|
68
68
|
dataset :guests
|
69
69
|
register_as :users
|
70
|
-
|
70
|
+
end
|
71
71
|
|
72
|
-
Class.new(ROM::Relation[:memory])
|
72
|
+
Class.new(ROM::Relation[:memory]) do
|
73
73
|
dataset :admins
|
74
74
|
register_as :users
|
75
|
-
|
75
|
+
end
|
76
76
|
|
77
77
|
expect { setup.finalize }.to raise_error(
|
78
78
|
ROM::RelationAlreadyDefinedError, /register_as :users/
|
@@ -27,7 +27,9 @@ describe ROM::ArrayDataset do
|
|
27
27
|
describe '#map!' do
|
28
28
|
context 'with a block' do
|
29
29
|
it 'returns a new dataset with mapped data' do
|
30
|
-
dataset.map!
|
30
|
+
dataset.map! do |row|
|
31
|
+
row.merge(age: 21)
|
32
|
+
end
|
31
33
|
|
32
34
|
expect(dataset).to match_array([
|
33
35
|
{ name: 'Jane', age: 21 }, { name: 'Joe', age: 21 }
|
@@ -30,11 +30,11 @@ describe ROM::ClassBuilder do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'yields created class' do
|
33
|
-
klass = builder.call
|
33
|
+
klass = builder.call { |yielded_class|
|
34
34
|
yielded_class.class_eval do
|
35
35
|
def self.testing; end
|
36
36
|
end
|
37
|
-
|
37
|
+
}
|
38
38
|
|
39
39
|
expect(klass).to respond_to(:testing)
|
40
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: transproc
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '0.2'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.2.
|
22
|
+
version: 0.2.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '0.2'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.2.
|
32
|
+
version: 0.2.1
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: equalizer
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- ".ruby-version"
|
120
120
|
- ".travis.yml"
|
121
121
|
- CHANGELOG.md
|
122
|
+
- CONTRIBUTING.md
|
122
123
|
- Gemfile
|
123
124
|
- Guardfile
|
124
125
|
- LICENSE
|
@@ -137,6 +138,7 @@ files:
|
|
137
138
|
- lib/rom/constants.rb
|
138
139
|
- lib/rom/env.rb
|
139
140
|
- lib/rom/global.rb
|
141
|
+
- lib/rom/global/plugin_dsl.rb
|
140
142
|
- lib/rom/header.rb
|
141
143
|
- lib/rom/header/attribute.rb
|
142
144
|
- lib/rom/lint/enumerable_dataset.rb
|
@@ -156,15 +158,20 @@ files:
|
|
156
158
|
- lib/rom/memory/repository.rb
|
157
159
|
- lib/rom/memory/storage.rb
|
158
160
|
- lib/rom/model_builder.rb
|
161
|
+
- lib/rom/pipeline.rb
|
162
|
+
- lib/rom/plugin.rb
|
163
|
+
- lib/rom/plugin_registry.rb
|
164
|
+
- lib/rom/plugins/relation/registry_reader.rb
|
159
165
|
- lib/rom/processor.rb
|
160
166
|
- lib/rom/processor/transproc.rb
|
161
167
|
- lib/rom/relation.rb
|
162
168
|
- lib/rom/relation/class_interface.rb
|
163
169
|
- lib/rom/relation/composite.rb
|
164
170
|
- lib/rom/relation/curried.rb
|
171
|
+
- lib/rom/relation/graph.rb
|
165
172
|
- lib/rom/relation/lazy.rb
|
166
173
|
- lib/rom/relation/loaded.rb
|
167
|
-
- lib/rom/relation/
|
174
|
+
- lib/rom/relation/materializable.rb
|
168
175
|
- lib/rom/repository.rb
|
169
176
|
- lib/rom/setup.rb
|
170
177
|
- lib/rom/setup/finalize.rb
|
@@ -178,6 +185,7 @@ files:
|
|
178
185
|
- lib/rom/support/class_builder.rb
|
179
186
|
- lib/rom/support/class_macros.rb
|
180
187
|
- lib/rom/support/data_proxy.rb
|
188
|
+
- lib/rom/support/deprecations.rb
|
181
189
|
- lib/rom/support/enumerable_dataset.rb
|
182
190
|
- lib/rom/support/inflector.rb
|
183
191
|
- lib/rom/support/options.rb
|
@@ -191,13 +199,17 @@ files:
|
|
191
199
|
- spec/integration/commands/delete_spec.rb
|
192
200
|
- spec/integration/commands/error_handling_spec.rb
|
193
201
|
- spec/integration/commands/update_spec.rb
|
202
|
+
- spec/integration/mappers/combine_spec.rb
|
194
203
|
- spec/integration/mappers/deep_embedded_spec.rb
|
195
204
|
- spec/integration/mappers/definition_dsl_spec.rb
|
196
205
|
- spec/integration/mappers/embedded_spec.rb
|
197
206
|
- spec/integration/mappers/group_spec.rb
|
198
207
|
- spec/integration/mappers/prefixing_attributes_spec.rb
|
208
|
+
- spec/integration/mappers/registering_custom_mappers_spec.rb
|
199
209
|
- spec/integration/mappers/renaming_attributes_spec.rb
|
210
|
+
- spec/integration/mappers/reusing_mappers_spec.rb
|
200
211
|
- spec/integration/mappers/symbolizing_attributes_spec.rb
|
212
|
+
- spec/integration/mappers/unwrap_spec.rb
|
201
213
|
- spec/integration/mappers/wrap_spec.rb
|
202
214
|
- spec/integration/multi_repo_spec.rb
|
203
215
|
- spec/integration/relations/reading_spec.rb
|
@@ -206,7 +218,9 @@ files:
|
|
206
218
|
- spec/integration/repositories/setting_logger_spec.rb
|
207
219
|
- spec/integration/setup_spec.rb
|
208
220
|
- spec/shared/enumerable_dataset.rb
|
221
|
+
- spec/shared/materializable.rb
|
209
222
|
- spec/shared/one_behavior.rb
|
223
|
+
- spec/shared/proxy.rb
|
210
224
|
- spec/shared/users_and_tasks.rb
|
211
225
|
- spec/spec_helper.rb
|
212
226
|
- spec/support/constant_leak_finder.rb
|
@@ -222,12 +236,16 @@ files:
|
|
222
236
|
- spec/unit/rom/mapper_registry_spec.rb
|
223
237
|
- spec/unit/rom/mapper_spec.rb
|
224
238
|
- spec/unit/rom/memory/dataset_spec.rb
|
239
|
+
- spec/unit/rom/memory/relation_spec.rb
|
225
240
|
- spec/unit/rom/memory/repository_spec.rb
|
226
241
|
- spec/unit/rom/memory/storage_spec.rb
|
227
242
|
- spec/unit/rom/model_builder_spec.rb
|
243
|
+
- spec/unit/rom/plugin_spec.rb
|
228
244
|
- spec/unit/rom/processor/transproc_spec.rb
|
229
245
|
- spec/unit/rom/registry_spec.rb
|
230
246
|
- spec/unit/rom/relation/composite_spec.rb
|
247
|
+
- spec/unit/rom/relation/graph_spec.rb
|
248
|
+
- spec/unit/rom/relation/lazy/combine_spec.rb
|
231
249
|
- spec/unit/rom/relation/lazy_spec.rb
|
232
250
|
- spec/unit/rom/relation/loaded_spec.rb
|
233
251
|
- spec/unit/rom/relation_spec.rb
|
@@ -258,9 +276,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
276
|
version: '0'
|
259
277
|
requirements: []
|
260
278
|
rubyforge_project:
|
261
|
-
rubygems_version: 2.
|
279
|
+
rubygems_version: 2.4.5
|
262
280
|
signing_key:
|
263
281
|
specification_version: 4
|
264
282
|
summary: Ruby Object Mapper
|
265
283
|
test_files: []
|
266
|
-
has_rdoc:
|