rom 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -3
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +13 -14
  5. data/{Changelog.md → CHANGELOG.md} +12 -3
  6. data/Gemfile +14 -10
  7. data/Gemfile.devtools +16 -16
  8. data/Guardfile +2 -5
  9. data/README.md +68 -56
  10. data/Rakefile +3 -3
  11. data/config/flay.yml +2 -2
  12. data/config/mutant.yml +2 -4
  13. data/config/rubocop.yml +30 -0
  14. data/lib/rom.rb +47 -9
  15. data/lib/rom/adapter.rb +52 -0
  16. data/lib/rom/adapter/memory.rb +70 -0
  17. data/lib/rom/boot.rb +158 -0
  18. data/lib/rom/boot/base_relation_dsl.rb +43 -0
  19. data/lib/rom/boot/dsl.rb +30 -0
  20. data/lib/rom/boot/mapper_dsl.rb +23 -0
  21. data/lib/rom/boot/relation_dsl.rb +23 -0
  22. data/lib/rom/boot/schema_dsl.rb +27 -0
  23. data/lib/rom/env.rb +48 -0
  24. data/lib/rom/header.rb +123 -0
  25. data/lib/rom/mapper.rb +38 -153
  26. data/lib/rom/mapper_builder.rb +85 -0
  27. data/lib/rom/model_builder.rb +58 -0
  28. data/lib/rom/ra.rb +196 -0
  29. data/lib/rom/ra/operation/group.rb +49 -0
  30. data/lib/rom/ra/operation/join.rb +41 -0
  31. data/lib/rom/ra/operation/wrap.rb +45 -0
  32. data/lib/rom/reader.rb +62 -0
  33. data/lib/rom/reader_builder.rb +28 -0
  34. data/lib/rom/relation.rb +41 -350
  35. data/lib/rom/relation_builder.rb +48 -0
  36. data/lib/rom/repository.rb +28 -53
  37. data/lib/rom/support/registry.rb +34 -0
  38. data/lib/rom/version.rb +3 -0
  39. data/rom.gemspec +12 -10
  40. data/spec/integration/adapters/extending_relations_spec.rb +43 -0
  41. data/spec/integration/mappers/definition_dsl_spec.rb +82 -0
  42. data/spec/integration/mappers/prefixing_attributes_spec.rb +42 -0
  43. data/spec/integration/mappers/renaming_attributes_spec.rb +138 -0
  44. data/spec/integration/ra/group_spec.rb +47 -0
  45. data/spec/integration/ra/join_spec.rb +24 -0
  46. data/spec/integration/ra/wrap_spec.rb +37 -0
  47. data/spec/integration/relations/reading_spec.rb +116 -0
  48. data/spec/integration/relations/registry_dsl_spec.rb +44 -0
  49. data/spec/integration/schema_spec.rb +29 -0
  50. data/spec/integration/setup_spec.rb +18 -0
  51. data/spec/shared/users_and_tasks.rb +34 -0
  52. data/spec/spec_helper.rb +14 -36
  53. data/spec/unit/rom/adapter_spec.rb +59 -0
  54. data/spec/unit/rom/header_spec.rb +58 -0
  55. data/spec/unit/rom/mapper_spec.rb +27 -0
  56. data/spec/unit/rom/ra/operation/group_spec.rb +55 -0
  57. data/spec/unit/rom/ra/operation/wrap_spec.rb +29 -0
  58. data/spec/unit/rom/relation_spec.rb +34 -0
  59. metadata +122 -190
  60. data/lib/rom/constants.rb +0 -16
  61. data/lib/rom/environment.rb +0 -105
  62. data/lib/rom/environment/builder.rb +0 -71
  63. data/lib/rom/mapper/attribute.rb +0 -108
  64. data/lib/rom/mapper/builder.rb +0 -58
  65. data/lib/rom/mapper/builder/definition.rb +0 -162
  66. data/lib/rom/mapper/header.rb +0 -103
  67. data/lib/rom/mapper/loader_builder.rb +0 -26
  68. data/lib/rom/schema.rb +0 -21
  69. data/lib/rom/schema/builder.rb +0 -59
  70. data/lib/rom/schema/definition.rb +0 -84
  71. data/lib/rom/schema/definition/relation.rb +0 -80
  72. data/lib/rom/schema/definition/relation/base.rb +0 -27
  73. data/lib/rom/session.rb +0 -111
  74. data/lib/rom/session/environment.rb +0 -67
  75. data/lib/rom/session/identity_map.rb +0 -43
  76. data/lib/rom/session/mapper.rb +0 -62
  77. data/lib/rom/session/relation.rb +0 -140
  78. data/lib/rom/session/state.rb +0 -59
  79. data/lib/rom/session/state/created.rb +0 -22
  80. data/lib/rom/session/state/deleted.rb +0 -25
  81. data/lib/rom/session/state/persisted.rb +0 -34
  82. data/lib/rom/session/state/transient.rb +0 -20
  83. data/lib/rom/session/state/updated.rb +0 -29
  84. data/lib/rom/session/tracker.rb +0 -62
  85. data/lib/rom/support/axiom/adapter.rb +0 -111
  86. data/lib/rom/support/axiom/adapter/data_objects.rb +0 -38
  87. data/lib/rom/support/axiom/adapter/memory.rb +0 -25
  88. data/lib/rom/support/axiom/adapter/postgres.rb +0 -19
  89. data/lib/rom/support/axiom/adapter/sqlite3.rb +0 -20
  90. data/lib/version.rb +0 -3
  91. data/spec/integration/environment_setup_spec.rb +0 -24
  92. data/spec/integration/grouped_mappers_spec.rb +0 -87
  93. data/spec/integration/join_and_group_spec.rb +0 -76
  94. data/spec/integration/join_and_wrap_spec.rb +0 -68
  95. data/spec/integration/mapping_embedded_relations_spec.rb +0 -73
  96. data/spec/integration/mapping_relations_spec.rb +0 -120
  97. data/spec/integration/schema_definition_spec.rb +0 -152
  98. data/spec/integration/session_spec.rb +0 -87
  99. data/spec/integration/wrapped_mappers_spec.rb +0 -73
  100. data/spec/shared/unit/environment_context.rb +0 -6
  101. data/spec/shared/unit/loader.rb +0 -11
  102. data/spec/shared/unit/loader_identity.rb +0 -13
  103. data/spec/shared/unit/mapper_context.rb +0 -11
  104. data/spec/shared/unit/relation_context.rb +0 -82
  105. data/spec/shared/unit/session_environment_context.rb +0 -11
  106. data/spec/shared/unit/session_relation_context.rb +0 -18
  107. data/spec/support/helper.rb +0 -34
  108. data/spec/support/ice_nine_config.rb +0 -10
  109. data/spec/support/test_mapper.rb +0 -110
  110. data/spec/unit/rom/environment/builder/mapping_spec.rb +0 -24
  111. data/spec/unit/rom/environment/builder/schema_spec.rb +0 -33
  112. data/spec/unit/rom/environment/class_methods/setup_spec.rb +0 -18
  113. data/spec/unit/rom/environment/repository_spec.rb +0 -21
  114. data/spec/unit/rom/mapper/attribute/embedded_collection/to_ast_spec.rb +0 -18
  115. data/spec/unit/rom/mapper/attribute/embedded_value/to_ast_spec.rb +0 -16
  116. data/spec/unit/rom/mapper/attribute/rename_spec.rb +0 -9
  117. data/spec/unit/rom/mapper/attribute/to_ast_spec.rb +0 -9
  118. data/spec/unit/rom/mapper/builder/class_methods/call_spec.rb +0 -61
  119. data/spec/unit/rom/mapper/class_methods/build_spec.rb +0 -55
  120. data/spec/unit/rom/mapper/dump_spec.rb +0 -11
  121. data/spec/unit/rom/mapper/group_spec.rb +0 -35
  122. data/spec/unit/rom/mapper/header/each_spec.rb +0 -26
  123. data/spec/unit/rom/mapper/header/element_reader_spec.rb +0 -21
  124. data/spec/unit/rom/mapper/header/group_spec.rb +0 -18
  125. data/spec/unit/rom/mapper/header/join_spec.rb +0 -14
  126. data/spec/unit/rom/mapper/header/keys_spec.rb +0 -29
  127. data/spec/unit/rom/mapper/header/project_spec.rb +0 -13
  128. data/spec/unit/rom/mapper/header/rename_spec.rb +0 -11
  129. data/spec/unit/rom/mapper/header/to_ast_spec.rb +0 -11
  130. data/spec/unit/rom/mapper/header/wrap_spec.rb +0 -18
  131. data/spec/unit/rom/mapper/identity_from_tuple_spec.rb +0 -11
  132. data/spec/unit/rom/mapper/identity_spec.rb +0 -11
  133. data/spec/unit/rom/mapper/join_spec.rb +0 -15
  134. data/spec/unit/rom/mapper/load_spec.rb +0 -11
  135. data/spec/unit/rom/mapper/new_object_spec.rb +0 -14
  136. data/spec/unit/rom/mapper/project_spec.rb +0 -11
  137. data/spec/unit/rom/mapper/rename_spec.rb +0 -16
  138. data/spec/unit/rom/mapper/wrap_spec.rb +0 -35
  139. data/spec/unit/rom/relation/delete_spec.rb +0 -15
  140. data/spec/unit/rom/relation/drop_spec.rb +0 -11
  141. data/spec/unit/rom/relation/each_spec.rb +0 -23
  142. data/spec/unit/rom/relation/first_spec.rb +0 -19
  143. data/spec/unit/rom/relation/group_spec.rb +0 -29
  144. data/spec/unit/rom/relation/inject_mapper_spec.rb +0 -17
  145. data/spec/unit/rom/relation/insert_spec.rb +0 -13
  146. data/spec/unit/rom/relation/last_spec.rb +0 -19
  147. data/spec/unit/rom/relation/one_spec.rb +0 -49
  148. data/spec/unit/rom/relation/rename_spec.rb +0 -21
  149. data/spec/unit/rom/relation/replace_spec.rb +0 -13
  150. data/spec/unit/rom/relation/restrict_spec.rb +0 -25
  151. data/spec/unit/rom/relation/sort_by_spec.rb +0 -25
  152. data/spec/unit/rom/relation/take_spec.rb +0 -11
  153. data/spec/unit/rom/relation/to_a_spec.rb +0 -20
  154. data/spec/unit/rom/relation/update_spec.rb +0 -25
  155. data/spec/unit/rom/relation/wrap_spec.rb +0 -29
  156. data/spec/unit/rom/repository/class_methods/build_spec.rb +0 -27
  157. data/spec/unit/rom/repository/element_reader_spec.rb +0 -21
  158. data/spec/unit/rom/repository/element_writer_spec.rb +0 -18
  159. data/spec/unit/rom/schema/builder/class_methods/build_spec.rb +0 -103
  160. data/spec/unit/rom/schema/element_reader_spec.rb +0 -15
  161. data/spec/unit/rom/session/class_methods/start_spec.rb +0 -23
  162. data/spec/unit/rom/session/clean_predicate_spec.rb +0 -21
  163. data/spec/unit/rom/session/environment/element_reader_spec.rb +0 -13
  164. data/spec/unit/rom/session/flush_spec.rb +0 -58
  165. data/spec/unit/rom/session/mapper/load_spec.rb +0 -47
  166. data/spec/unit/rom/session/relation/delete_spec.rb +0 -28
  167. data/spec/unit/rom/session/relation/dirty_predicate_spec.rb +0 -35
  168. data/spec/unit/rom/session/relation/identity_spec.rb +0 -11
  169. data/spec/unit/rom/session/relation/new_spec.rb +0 -50
  170. data/spec/unit/rom/session/relation/save_spec.rb +0 -50
  171. data/spec/unit/rom/session/relation/state_spec.rb +0 -23
  172. data/spec/unit/rom/session/relation/track_spec.rb +0 -23
  173. data/spec/unit/rom/session/relation/tracking_predicate_spec.rb +0 -23
  174. data/spec/unit/rom/session/relation/update_attributes_spec.rb +0 -45
  175. data/spec/unit/rom/session/state_spec.rb +0 -79
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe ROM::Header do
4
+ describe '.coerce' do
5
+ subject(:header) { ROM::Header.coerce(input) }
6
+
7
+
8
+ context 'with a primitive type' do
9
+ let(:input) { [[:name, type: String]] }
10
+
11
+ let(:expected) { ROM::Header.new(name: ROM::Header::Attribute.coerce(input.first)) }
12
+
13
+ it 'returns a header with coerced attributes' do
14
+ expect(header).to eql(expected)
15
+
16
+ expect(header[:name].type).to be(String)
17
+ end
18
+ end
19
+
20
+ context 'with a collection type' do
21
+ let(:input) { [[:tasks, header: [[:title]], type: Array, model: model]] }
22
+ let(:model) { Class.new }
23
+
24
+ let(:expected) { ROM::Header.new(tasks: ROM::Header::Attribute.coerce(input.first)) }
25
+
26
+ it 'returns a header with coerced attributes' do
27
+ expect(header).to eql(expected)
28
+
29
+ tasks = header[:tasks]
30
+
31
+ expect(tasks.type).to be(Array)
32
+ expect(tasks.model).to be(model)
33
+ expect(tasks.header).to eql(ROM::Header.coerce([[:title]]))
34
+
35
+ expect(input.first[1]).to eql(header: [[:title]], type: Array, model: model)
36
+ end
37
+ end
38
+
39
+ context 'with a hash type' do
40
+ let(:input) { [[:task, header: [[:title]], type: Hash, model: model]] }
41
+ let(:model) { Class.new }
42
+
43
+ let(:expected) { ROM::Header.new(task: ROM::Header::Attribute.coerce(input.first)) }
44
+
45
+ it 'returns a header with coerced attributes' do
46
+ expect(header).to eql(expected)
47
+
48
+ tasks = header[:task]
49
+
50
+ expect(tasks.type).to be(Hash)
51
+ expect(tasks.model).to be(model)
52
+ expect(tasks.header).to eql(ROM::Header.coerce([[:title]]))
53
+
54
+ expect(input.first[1]).to eql(header: [[:title]], type: Hash, model: model)
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ require 'ostruct'
4
+
5
+ describe ROM::Mapper do
6
+ subject(:mapper) { ROM::Mapper.build(ROM::Header.coerce(relation.header.zip), user_model) }
7
+
8
+ let(:relation) { ROM::Relation.new(dataset, [:id, :name]) }
9
+ let(:dataset) { ROM::Adapter::Memory::Dataset.new([{id: 1, name: 'Jane'}, {id: 2, name: 'Joe'}]) }
10
+ let(:user_model) { Class.new(OpenStruct) { include Equalizer.new(:id, :name) } }
11
+
12
+ let(:jane) { user_model.new(id: 1, name: 'Jane') }
13
+ let(:joe) { user_model.new(id: 2, name: 'Joe') }
14
+
15
+ describe "#each" do
16
+ it "yields all mapped objects" do
17
+ result = []
18
+
19
+ relation.each do |tuple|
20
+ result << mapper.load(tuple)
21
+ end
22
+
23
+ expect(result).to eql([jane, joe])
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Group operation' do
4
+ subject(:group) { opts = options; relation.in_memory { group(opts) } }
5
+
6
+ let(:relation) do
7
+ ROM::Relation.new(dataset, header)
8
+ end
9
+
10
+ let(:header) do
11
+ [:name, :email, :street, :zipcode, :city]
12
+ end
13
+
14
+ let(:options) do
15
+ { addresses: [:street, :zipcode, :city] }
16
+ end
17
+
18
+ context 'when group values are present' do
19
+ let(:dataset) do
20
+ [{ name: 'Jane',
21
+ email: 'jane@doe.org',
22
+ street: 'Street 1',
23
+ zipcode: '1234',
24
+ city: 'Cracow' }]
25
+ end
26
+
27
+ it 'groups given attributes under specified key' do
28
+ expect(group.to_a).to eql(
29
+ [{ name: 'Jane',
30
+ email: 'jane@doe.org',
31
+ addresses: [{ street: 'Street 1', zipcode: '1234', city: 'Cracow' }] }]
32
+ )
33
+ end
34
+
35
+ it 'exposes the header' do
36
+ expect(group.header).to eql([:name, :email, :addresses])
37
+ end
38
+ end
39
+
40
+ context 'when group values are not present' do
41
+ let(:dataset) do
42
+ [{ name: 'Jane',
43
+ email: 'jane@doe.org',
44
+ street: nil,
45
+ zipcode: nil,
46
+ city: nil }]
47
+ end
48
+
49
+ it 'sets empty array for grouped attributes' do
50
+ expect(group.to_a).to eql(
51
+ [{ name: 'Jane', email: 'jane@doe.org', addresses: [] }]
52
+ )
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Wrap operation' do
4
+ subject(:wrap) { relation.in_memory { wrap(address: [:street, :zipcode, :city]) } }
5
+
6
+ let(:relation) do
7
+ ROM::Relation.new([{ name: 'Jane',
8
+ email: 'jane@doe.org',
9
+ street: 'Street 1',
10
+ zipcode: '1234',
11
+ city: 'Cracow' }], header)
12
+ end
13
+
14
+ let(:header) do
15
+ [:name, :email, :street, :zipcode, :city]
16
+ end
17
+
18
+ it 'wraps given attributes under specified key' do
19
+ expect(wrap.to_a).to eql(
20
+ [{ name: 'Jane',
21
+ email: 'jane@doe.org',
22
+ address: { street: 'Street 1', zipcode: '1234', city: 'Cracow' } }]
23
+ )
24
+ end
25
+
26
+ it 'exposes the header' do
27
+ expect(wrap.header).to eql([:name, :email, :address])
28
+ end
29
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe ROM::Relation do
4
+ subject(:relation) { ROM::Relation.new(dataset, [:id, :name]) }
5
+
6
+ let(:dataset) { ROM::Adapter::Memory::Dataset.new([jane, joe]) }
7
+
8
+ let(:jane) { { id: 1, name: 'Jane' } }
9
+ let(:joe) { { id: 2, name: 'Joe' } }
10
+
11
+ describe "#header" do
12
+ it "return's duplicated and frozen dataset header" do
13
+ expect(relation.header).to be_frozen
14
+ expect(relation.header).not_to be(dataset.header)
15
+ end
16
+ end
17
+
18
+ describe "#each" do
19
+ it "yields all objects" do
20
+ result = []
21
+
22
+ relation.each do |user|
23
+ result << user
24
+ end
25
+
26
+ expect(result).to eql([jane, joe])
27
+ end
28
+
29
+ it "returns an enumerator if block is not provided" do
30
+ expect(relation.each).to be_instance_of(Enumerator)
31
+ end
32
+ end
33
+
34
+ end
metadata CHANGED
@@ -1,152 +1,163 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
- - Dan Kubb
9
- - Markus Schirp
10
- - Martin Gamsjaeger
11
7
  - Piotr Solnica
8
+ - piotr.solnica@gmail.com
12
9
  autorequire:
13
10
  bindir: bin
14
11
  cert_chain: []
15
- date: 2014-04-06 00:00:00.000000000 Z
12
+ date: 2014-11-24 00:00:00.000000000 Z
16
13
  dependencies:
17
14
  - !ruby/object:Gem::Dependency
18
15
  name: addressable
19
16
  requirement: !ruby/object:Gem::Requirement
20
- none: false
21
17
  requirements:
22
- - - ~>
18
+ - - "~>"
23
19
  - !ruby/object:Gem::Version
24
20
  version: '2.3'
25
- - - ! '>='
26
- - !ruby/object:Gem::Version
27
- version: 2.3.3
28
21
  type: :runtime
29
22
  prerelease: false
30
23
  version_requirements: !ruby/object:Gem::Requirement
31
- none: false
32
24
  requirements:
33
- - - ~>
25
+ - - "~>"
34
26
  - !ruby/object:Gem::Version
35
27
  version: '2.3'
36
- - - ! '>='
28
+ - !ruby/object:Gem::Dependency
29
+ name: equalizer
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '0.0'
35
+ - - ">="
37
36
  - !ruby/object:Gem::Version
38
- version: 2.3.3
37
+ version: 0.0.9
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - "~>"
43
+ - !ruby/object:Gem::Version
44
+ version: '0.0'
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.9
39
48
  - !ruby/object:Gem::Dependency
40
49
  name: concord
41
50
  requirement: !ruby/object:Gem::Requirement
42
- none: false
43
51
  requirements:
44
- - - ~>
52
+ - - "~>"
45
53
  - !ruby/object:Gem::Version
46
54
  version: '0.1'
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 0.1.4
47
58
  type: :runtime
48
59
  prerelease: false
49
60
  version_requirements: !ruby/object:Gem::Requirement
50
- none: false
51
61
  requirements:
52
- - - ~>
62
+ - - "~>"
53
63
  - !ruby/object:Gem::Version
54
64
  version: '0.1'
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 0.1.4
55
68
  - !ruby/object:Gem::Dependency
56
- name: adamantium
69
+ name: charlatan
57
70
  requirement: !ruby/object:Gem::Requirement
58
- none: false
59
71
  requirements:
60
- - - ~>
72
+ - - "~>"
61
73
  - !ruby/object:Gem::Version
62
- version: '0.2'
74
+ version: '0.1'
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0.1'
63
78
  type: :runtime
64
79
  prerelease: false
65
80
  version_requirements: !ruby/object:Gem::Requirement
66
- none: false
67
81
  requirements:
68
- - - ~>
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '0.1'
85
+ - - ">="
69
86
  - !ruby/object:Gem::Version
70
- version: '0.2'
87
+ version: '0.1'
71
88
  - !ruby/object:Gem::Dependency
72
- name: axiom
89
+ name: inflecto
73
90
  requirement: !ruby/object:Gem::Requirement
74
- none: false
75
91
  requirements:
76
- - - ~>
92
+ - - "~>"
77
93
  - !ruby/object:Gem::Version
78
- version: '0.2'
94
+ version: '0.0'
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 0.0.2
79
98
  type: :runtime
80
99
  prerelease: false
81
100
  version_requirements: !ruby/object:Gem::Requirement
82
- none: false
83
101
  requirements:
84
- - - ~>
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '0.0'
105
+ - - ">="
85
106
  - !ruby/object:Gem::Version
86
- version: '0.2'
107
+ version: 0.0.2
87
108
  - !ruby/object:Gem::Dependency
88
- name: axiom-optimizer
109
+ name: rake
89
110
  requirement: !ruby/object:Gem::Requirement
90
- none: false
91
111
  requirements:
92
- - - ~>
112
+ - - "~>"
93
113
  - !ruby/object:Gem::Version
94
- version: '0.2'
95
- type: :runtime
114
+ version: '10.3'
115
+ type: :development
96
116
  prerelease: false
97
117
  version_requirements: !ruby/object:Gem::Requirement
98
- none: false
99
118
  requirements:
100
- - - ~>
119
+ - - "~>"
101
120
  - !ruby/object:Gem::Version
102
- version: '0.2'
121
+ version: '10.3'
103
122
  - !ruby/object:Gem::Dependency
104
- name: charlatan
123
+ name: rspec-core
105
124
  requirement: !ruby/object:Gem::Requirement
106
- none: false
107
125
  requirements:
108
- - - ~>
126
+ - - "~>"
109
127
  - !ruby/object:Gem::Version
110
- version: '0.1'
111
- type: :runtime
128
+ version: '3.1'
129
+ type: :development
112
130
  prerelease: false
113
131
  version_requirements: !ruby/object:Gem::Requirement
114
- none: false
115
132
  requirements:
116
- - - ~>
133
+ - - "~>"
117
134
  - !ruby/object:Gem::Version
118
- version: '0.1'
135
+ version: '3.1'
119
136
  - !ruby/object:Gem::Dependency
120
- name: morpher
137
+ name: rspec-expectations
121
138
  requirement: !ruby/object:Gem::Requirement
122
- none: false
123
139
  requirements:
124
- - - ~>
140
+ - - "~>"
125
141
  - !ruby/object:Gem::Version
126
- version: '0.2'
127
- type: :runtime
142
+ version: '3.1'
143
+ type: :development
128
144
  prerelease: false
129
145
  version_requirements: !ruby/object:Gem::Requirement
130
- none: false
131
146
  requirements:
132
- - - ~>
147
+ - - "~>"
133
148
  - !ruby/object:Gem::Version
134
- version: '0.2'
149
+ version: '3.1'
135
150
  description: Ruby Object Mapper
136
- email:
137
- - dan.kubb@gmail.com
138
- - gamsnjaga@gmail.com
139
- - mbj@schirp-dso.com
140
- - piotr.solnica@gmail.com
151
+ email: piotr.solnica@gmail.com
141
152
  executables: []
142
153
  extensions: []
143
154
  extra_rdoc_files: []
144
155
  files:
145
- - .gitignore
146
- - .rspec
147
- - .ruby-version
148
- - .travis.yml
149
- - Changelog.md
156
+ - ".gitignore"
157
+ - ".rspec"
158
+ - ".ruby-version"
159
+ - ".travis.yml"
160
+ - CHANGELOG.md
150
161
  - Gemfile
151
162
  - Gemfile.devtools
152
163
  - Guardfile
@@ -161,151 +172,72 @@ files:
161
172
  - config/rubocop.yml
162
173
  - config/yardstick.yml
163
174
  - lib/rom.rb
164
- - lib/rom/constants.rb
165
- - lib/rom/environment.rb
166
- - lib/rom/environment/builder.rb
175
+ - lib/rom/adapter.rb
176
+ - lib/rom/adapter/memory.rb
177
+ - lib/rom/boot.rb
178
+ - lib/rom/boot/base_relation_dsl.rb
179
+ - lib/rom/boot/dsl.rb
180
+ - lib/rom/boot/mapper_dsl.rb
181
+ - lib/rom/boot/relation_dsl.rb
182
+ - lib/rom/boot/schema_dsl.rb
183
+ - lib/rom/env.rb
184
+ - lib/rom/header.rb
167
185
  - lib/rom/mapper.rb
168
- - lib/rom/mapper/attribute.rb
169
- - lib/rom/mapper/builder.rb
170
- - lib/rom/mapper/builder/definition.rb
171
- - lib/rom/mapper/header.rb
172
- - lib/rom/mapper/loader_builder.rb
186
+ - lib/rom/mapper_builder.rb
187
+ - lib/rom/model_builder.rb
188
+ - lib/rom/ra.rb
189
+ - lib/rom/ra/operation/group.rb
190
+ - lib/rom/ra/operation/join.rb
191
+ - lib/rom/ra/operation/wrap.rb
192
+ - lib/rom/reader.rb
193
+ - lib/rom/reader_builder.rb
173
194
  - lib/rom/relation.rb
195
+ - lib/rom/relation_builder.rb
174
196
  - lib/rom/repository.rb
175
- - lib/rom/schema.rb
176
- - lib/rom/schema/builder.rb
177
- - lib/rom/schema/definition.rb
178
- - lib/rom/schema/definition/relation.rb
179
- - lib/rom/schema/definition/relation/base.rb
180
- - lib/rom/session.rb
181
- - lib/rom/session/environment.rb
182
- - lib/rom/session/identity_map.rb
183
- - lib/rom/session/mapper.rb
184
- - lib/rom/session/relation.rb
185
- - lib/rom/session/state.rb
186
- - lib/rom/session/state/created.rb
187
- - lib/rom/session/state/deleted.rb
188
- - lib/rom/session/state/persisted.rb
189
- - lib/rom/session/state/transient.rb
190
- - lib/rom/session/state/updated.rb
191
- - lib/rom/session/tracker.rb
192
- - lib/rom/support/axiom/adapter.rb
193
- - lib/rom/support/axiom/adapter/data_objects.rb
194
- - lib/rom/support/axiom/adapter/memory.rb
195
- - lib/rom/support/axiom/adapter/postgres.rb
196
- - lib/rom/support/axiom/adapter/sqlite3.rb
197
- - lib/version.rb
197
+ - lib/rom/support/registry.rb
198
+ - lib/rom/version.rb
198
199
  - rom.gemspec
199
- - spec/integration/environment_setup_spec.rb
200
- - spec/integration/grouped_mappers_spec.rb
201
- - spec/integration/join_and_group_spec.rb
202
- - spec/integration/join_and_wrap_spec.rb
203
- - spec/integration/mapping_embedded_relations_spec.rb
204
- - spec/integration/mapping_relations_spec.rb
205
- - spec/integration/schema_definition_spec.rb
206
- - spec/integration/session_spec.rb
207
- - spec/integration/wrapped_mappers_spec.rb
208
- - spec/shared/unit/environment_context.rb
209
- - spec/shared/unit/loader.rb
210
- - spec/shared/unit/loader_identity.rb
211
- - spec/shared/unit/mapper_context.rb
212
- - spec/shared/unit/relation_context.rb
213
- - spec/shared/unit/session_environment_context.rb
214
- - spec/shared/unit/session_relation_context.rb
200
+ - spec/integration/adapters/extending_relations_spec.rb
201
+ - spec/integration/mappers/definition_dsl_spec.rb
202
+ - spec/integration/mappers/prefixing_attributes_spec.rb
203
+ - spec/integration/mappers/renaming_attributes_spec.rb
204
+ - spec/integration/ra/group_spec.rb
205
+ - spec/integration/ra/join_spec.rb
206
+ - spec/integration/ra/wrap_spec.rb
207
+ - spec/integration/relations/reading_spec.rb
208
+ - spec/integration/relations/registry_dsl_spec.rb
209
+ - spec/integration/schema_spec.rb
210
+ - spec/integration/setup_spec.rb
211
+ - spec/shared/users_and_tasks.rb
215
212
  - spec/spec_helper.rb
216
- - spec/support/helper.rb
217
- - spec/support/ice_nine_config.rb
218
- - spec/support/test_mapper.rb
219
- - spec/unit/rom/environment/builder/mapping_spec.rb
220
- - spec/unit/rom/environment/builder/schema_spec.rb
221
- - spec/unit/rom/environment/class_methods/setup_spec.rb
222
- - spec/unit/rom/environment/repository_spec.rb
223
- - spec/unit/rom/mapper/attribute/embedded_collection/to_ast_spec.rb
224
- - spec/unit/rom/mapper/attribute/embedded_value/to_ast_spec.rb
225
- - spec/unit/rom/mapper/attribute/rename_spec.rb
226
- - spec/unit/rom/mapper/attribute/to_ast_spec.rb
227
- - spec/unit/rom/mapper/builder/class_methods/call_spec.rb
228
- - spec/unit/rom/mapper/class_methods/build_spec.rb
229
- - spec/unit/rom/mapper/dump_spec.rb
230
- - spec/unit/rom/mapper/group_spec.rb
231
- - spec/unit/rom/mapper/header/each_spec.rb
232
- - spec/unit/rom/mapper/header/element_reader_spec.rb
233
- - spec/unit/rom/mapper/header/group_spec.rb
234
- - spec/unit/rom/mapper/header/join_spec.rb
235
- - spec/unit/rom/mapper/header/keys_spec.rb
236
- - spec/unit/rom/mapper/header/project_spec.rb
237
- - spec/unit/rom/mapper/header/rename_spec.rb
238
- - spec/unit/rom/mapper/header/to_ast_spec.rb
239
- - spec/unit/rom/mapper/header/wrap_spec.rb
240
- - spec/unit/rom/mapper/identity_from_tuple_spec.rb
241
- - spec/unit/rom/mapper/identity_spec.rb
242
- - spec/unit/rom/mapper/join_spec.rb
243
- - spec/unit/rom/mapper/load_spec.rb
244
- - spec/unit/rom/mapper/new_object_spec.rb
245
- - spec/unit/rom/mapper/project_spec.rb
246
- - spec/unit/rom/mapper/rename_spec.rb
247
- - spec/unit/rom/mapper/wrap_spec.rb
248
- - spec/unit/rom/relation/delete_spec.rb
249
- - spec/unit/rom/relation/drop_spec.rb
250
- - spec/unit/rom/relation/each_spec.rb
251
- - spec/unit/rom/relation/first_spec.rb
252
- - spec/unit/rom/relation/group_spec.rb
253
- - spec/unit/rom/relation/inject_mapper_spec.rb
254
- - spec/unit/rom/relation/insert_spec.rb
255
- - spec/unit/rom/relation/last_spec.rb
256
- - spec/unit/rom/relation/one_spec.rb
257
- - spec/unit/rom/relation/rename_spec.rb
258
- - spec/unit/rom/relation/replace_spec.rb
259
- - spec/unit/rom/relation/restrict_spec.rb
260
- - spec/unit/rom/relation/sort_by_spec.rb
261
- - spec/unit/rom/relation/take_spec.rb
262
- - spec/unit/rom/relation/to_a_spec.rb
263
- - spec/unit/rom/relation/update_spec.rb
264
- - spec/unit/rom/relation/wrap_spec.rb
265
- - spec/unit/rom/repository/class_methods/build_spec.rb
266
- - spec/unit/rom/repository/element_reader_spec.rb
267
- - spec/unit/rom/repository/element_writer_spec.rb
268
- - spec/unit/rom/schema/builder/class_methods/build_spec.rb
269
- - spec/unit/rom/schema/element_reader_spec.rb
270
- - spec/unit/rom/session/class_methods/start_spec.rb
271
- - spec/unit/rom/session/clean_predicate_spec.rb
272
- - spec/unit/rom/session/environment/element_reader_spec.rb
273
- - spec/unit/rom/session/flush_spec.rb
274
- - spec/unit/rom/session/mapper/load_spec.rb
275
- - spec/unit/rom/session/relation/delete_spec.rb
276
- - spec/unit/rom/session/relation/dirty_predicate_spec.rb
277
- - spec/unit/rom/session/relation/identity_spec.rb
278
- - spec/unit/rom/session/relation/new_spec.rb
279
- - spec/unit/rom/session/relation/save_spec.rb
280
- - spec/unit/rom/session/relation/state_spec.rb
281
- - spec/unit/rom/session/relation/track_spec.rb
282
- - spec/unit/rom/session/relation/tracking_predicate_spec.rb
283
- - spec/unit/rom/session/relation/update_attributes_spec.rb
284
- - spec/unit/rom/session/state_spec.rb
213
+ - spec/unit/rom/adapter_spec.rb
214
+ - spec/unit/rom/header_spec.rb
215
+ - spec/unit/rom/mapper_spec.rb
216
+ - spec/unit/rom/ra/operation/group_spec.rb
217
+ - spec/unit/rom/ra/operation/wrap_spec.rb
218
+ - spec/unit/rom/relation_spec.rb
285
219
  homepage: http://rom-rb.org
286
220
  licenses:
287
221
  - MIT
222
+ metadata: {}
288
223
  post_install_message:
289
224
  rdoc_options: []
290
225
  require_paths:
291
226
  - lib
292
227
  required_ruby_version: !ruby/object:Gem::Requirement
293
- none: false
294
228
  requirements:
295
- - - ! '>='
229
+ - - ">="
296
230
  - !ruby/object:Gem::Version
297
231
  version: '0'
298
232
  required_rubygems_version: !ruby/object:Gem::Requirement
299
- none: false
300
233
  requirements:
301
- - - ! '>='
234
+ - - ">="
302
235
  - !ruby/object:Gem::Version
303
236
  version: '0'
304
237
  requirements: []
305
238
  rubyforge_project:
306
- rubygems_version: 1.8.23
239
+ rubygems_version: 2.2.2
307
240
  signing_key:
308
- specification_version: 3
241
+ specification_version: 4
309
242
  summary: Ruby Object Mapper
310
243
  test_files: []
311
- has_rdoc: