rom 0.9.0.rc1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -2
- data/lib/rom/command.rb +2 -2
- data/lib/rom/command_registry.rb +1 -1
- data/lib/rom/commands/abstract.rb +1 -1
- data/lib/rom/commands/graph.rb +1 -1
- data/lib/rom/environment.rb +6 -3
- data/lib/rom/environment_plugin.rb +2 -2
- data/lib/rom/environment_plugins/auto_registration.rb +14 -4
- data/lib/rom/global/plugin_dsl.rb +2 -2
- data/lib/rom/plugin_registry.rb +1 -1
- data/lib/rom/relation.rb +3 -3
- data/lib/rom/relation/class_interface.rb +2 -2
- data/lib/rom/relation/composite.rb +3 -1
- data/lib/rom/relation/curried.rb +5 -2
- data/lib/rom/setup_dsl/command.rb +1 -1
- data/lib/rom/setup_dsl/command_dsl.rb +1 -1
- data/lib/rom/setup_dsl/mapper.rb +1 -1
- data/lib/rom/setup_dsl/mapper_dsl.rb +1 -1
- data/lib/rom/setup_dsl/relation.rb +1 -1
- data/lib/rom/setup_dsl/setup.rb +1 -1
- data/lib/rom/version.rb +1 -1
- data/spec/integration/multi_env_spec.rb +177 -0
- data/spec/unit/rom/plugin_spec.rb +12 -6
- data/spec/unit/rom/relation/composite_spec.rb +24 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e37b5bfee7aba0349fc7072c15a936d86b5d64da
|
4
|
+
data.tar.gz: 960446e1976fcfbe3d13d7bafb25a83ce7912626
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c251e5659fb72fc73cfca473a1667d4da46a4ca58ed68f31eb2b74f275139ca86ffdf49c93f2b87a194420baa5911655e26927e5d923239ead79ca2bc910cda
|
7
|
+
data.tar.gz: 6c35bbee777498703f1a386ea4ce2f91d96b0860c7a664800ffe05f58ba1ce18199279f088f9ae3dac2b3b0ce6d11fc6aa718d10afbb7db01192b08500012674
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## v0.9.0
|
1
|
+
## v0.9.0 2015-08-19
|
2
2
|
|
3
3
|
### Added
|
4
4
|
|
@@ -24,8 +24,11 @@
|
|
24
24
|
* Adapter-specific interface is properly included in relation descendants (solnic)
|
25
25
|
* Combined commands (aka command graph) properly rejects keys from nested input
|
26
26
|
prior sending the input to individual commands (solnic)
|
27
|
+
* Composite relation materializes correctly when another composite on the right
|
28
|
+
side became materialized (ie piping relation through a composite relation will
|
29
|
+
work correctly) (solnic)
|
27
30
|
|
28
|
-
[Compare v0.8.1...
|
31
|
+
[Compare v0.8.1...v0.9.0](https://github.com/rom-rb/rom/compare/v0.8.1...v0.9.0)
|
29
32
|
|
30
33
|
## v0.8.1 2015-07-12
|
31
34
|
|
data/lib/rom/command.rb
CHANGED
@@ -60,7 +60,7 @@ module ROM
|
|
60
60
|
# @return [Command]
|
61
61
|
#
|
62
62
|
# @api public
|
63
|
-
def self.build(relation, options =
|
63
|
+
def self.build(relation, options = EMPTY_HASH)
|
64
64
|
new(relation, self.options.merge(options))
|
65
65
|
end
|
66
66
|
|
@@ -78,7 +78,7 @@ module ROM
|
|
78
78
|
# @option options [Symbol] :adapter (:default) first adapter to check for plugin
|
79
79
|
#
|
80
80
|
# @api public
|
81
|
-
def self.use(plugin, _options =
|
81
|
+
def self.use(plugin, _options = EMPTY_HASH)
|
82
82
|
ROM.plugin_registry.commands.fetch(plugin, adapter).apply_to(self)
|
83
83
|
end
|
84
84
|
|
data/lib/rom/command_registry.rb
CHANGED
data/lib/rom/commands/graph.rb
CHANGED
data/lib/rom/environment.rb
CHANGED
@@ -45,11 +45,14 @@ module ROM
|
|
45
45
|
ROM.plugin_registry
|
46
46
|
end
|
47
47
|
|
48
|
-
# Apply
|
48
|
+
# Apply a plugin to the environment
|
49
|
+
#
|
50
|
+
# @param [Mixed] The plugin identifier, usually a Symbol
|
51
|
+
# @param [Hash] Plugin options
|
49
52
|
#
|
50
53
|
# @api public
|
51
|
-
def use(plugin)
|
52
|
-
plugin_registry.environment.fetch(plugin).apply_to(self)
|
54
|
+
def use(plugin, options = {})
|
55
|
+
plugin_registry.environment.fetch(plugin).apply_to(self, options)
|
53
56
|
end
|
54
57
|
|
55
58
|
# Starts the setup process for relations, mappers and commands.
|
@@ -7,10 +7,20 @@ module ROM
|
|
7
7
|
# @api public
|
8
8
|
module AutoRegistration
|
9
9
|
# @api private
|
10
|
-
def self.apply(environment)
|
11
|
-
|
12
|
-
|
13
|
-
ROM::
|
10
|
+
def self.apply(environment, options = {})
|
11
|
+
if_proc = options.fetch(:if, ->(*args) { true })
|
12
|
+
|
13
|
+
ROM::Relation.on(:inherited) do |relation|
|
14
|
+
environment.register_relation(relation) if if_proc.call(relation)
|
15
|
+
end
|
16
|
+
|
17
|
+
ROM::Command.on(:inherited) do |command|
|
18
|
+
environment.register_command(command) if if_proc.call(command)
|
19
|
+
end
|
20
|
+
|
21
|
+
ROM::Mapper.on(:inherited) do |mapper|
|
22
|
+
environment.register_mapper(mapper) if if_proc.call(mapper)
|
23
|
+
end
|
14
24
|
end
|
15
25
|
end
|
16
26
|
end
|
@@ -19,7 +19,7 @@ module ROM
|
|
19
19
|
attr_reader :registry
|
20
20
|
|
21
21
|
# @api private
|
22
|
-
def initialize(registry, defaults =
|
22
|
+
def initialize(registry, defaults = EMPTY_HASH, &block)
|
23
23
|
@registry = registry
|
24
24
|
@defaults = defaults
|
25
25
|
instance_exec(&block)
|
@@ -32,7 +32,7 @@ module ROM
|
|
32
32
|
# @param [Hash] options
|
33
33
|
#
|
34
34
|
# @api public
|
35
|
-
def register(name, mod, options =
|
35
|
+
def register(name, mod, options = EMPTY_HASH)
|
36
36
|
registry.register(name, mod, defaults.merge(options))
|
37
37
|
end
|
38
38
|
|
data/lib/rom/plugin_registry.rb
CHANGED
@@ -49,7 +49,7 @@ module ROM
|
|
49
49
|
# relation or mapper)
|
50
50
|
# @option options [Symbol] :adapter (:default) which adapter this plugin
|
51
51
|
# applies to. Leave blank for all adapters
|
52
|
-
def register(name, mod, options =
|
52
|
+
def register(name, mod, options = EMPTY_HASH)
|
53
53
|
type = options.fetch(:type)
|
54
54
|
adapter = options.fetch(:adapter, :default)
|
55
55
|
|
data/lib/rom/relation.rb
CHANGED
@@ -19,7 +19,7 @@ module ROM
|
|
19
19
|
# however, is considered private and should not be used outside of the
|
20
20
|
# relation instance.
|
21
21
|
#
|
22
|
-
# ROM builds sub-classes of this class for every relation defined in the
|
22
|
+
# ROM builds sub-classes of this class for every relation defined in the
|
23
23
|
# environment for easy inspection and extensibility - every gateway can
|
24
24
|
# provide extensions for those sub-classes but there is always a vanilla
|
25
25
|
# relation instance stored in the schema registry.
|
@@ -47,7 +47,7 @@ module ROM
|
|
47
47
|
attr_reader :dataset
|
48
48
|
|
49
49
|
# @api private
|
50
|
-
def initialize(dataset, options =
|
50
|
+
def initialize(dataset, options = EMPTY_HASH)
|
51
51
|
@dataset = dataset
|
52
52
|
super
|
53
53
|
end
|
@@ -115,7 +115,7 @@ module ROM
|
|
115
115
|
private
|
116
116
|
|
117
117
|
# @api private
|
118
|
-
def __new__(dataset, new_opts =
|
118
|
+
def __new__(dataset, new_opts = EMPTY_HASH)
|
119
119
|
self.class.new(dataset, options.merge(new_opts))
|
120
120
|
end
|
121
121
|
end
|
@@ -72,7 +72,7 @@ module ROM
|
|
72
72
|
end
|
73
73
|
|
74
74
|
# @api private
|
75
|
-
def initialize(dataset, options =
|
75
|
+
def initialize(dataset, options = EMPTY_HASH)
|
76
76
|
@name = self.class.dataset
|
77
77
|
super
|
78
78
|
end
|
@@ -131,7 +131,7 @@ module ROM
|
|
131
131
|
# @option options [Symbol] :adapter (:default) first adapter to check for plugin
|
132
132
|
#
|
133
133
|
# @api public
|
134
|
-
def use(plugin, _options =
|
134
|
+
def use(plugin, _options = EMPTY_HASH)
|
135
135
|
ROM.plugin_registry.relations.fetch(plugin, adapter).apply_to(self)
|
136
136
|
end
|
137
137
|
|
data/lib/rom/relation/curried.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'rom/support/options'
|
2
|
+
|
3
|
+
require 'rom/pipeline'
|
2
4
|
require 'rom/relation/materializable'
|
3
5
|
|
4
6
|
module ROM
|
@@ -6,6 +8,7 @@ module ROM
|
|
6
8
|
class Curried
|
7
9
|
include Options
|
8
10
|
include Materializable
|
11
|
+
include Pipeline
|
9
12
|
|
10
13
|
option :name, type: Symbol, reader: true
|
11
14
|
option :arity, type: Integer, reader: true, default: -1
|
@@ -14,7 +17,7 @@ module ROM
|
|
14
17
|
attr_reader :relation
|
15
18
|
|
16
19
|
# @api private
|
17
|
-
def initialize(relation, options =
|
20
|
+
def initialize(relation, options = EMPTY_HASH)
|
18
21
|
@relation = relation
|
19
22
|
super
|
20
23
|
end
|
@@ -67,7 +70,7 @@ module ROM
|
|
67
70
|
private
|
68
71
|
|
69
72
|
# @api private
|
70
|
-
def __new__(relation, new_opts =
|
73
|
+
def __new__(relation, new_opts = EMPTY_HASH)
|
71
74
|
Curried.new(relation, options.merge(new_opts))
|
72
75
|
end
|
73
76
|
|
@@ -8,7 +8,7 @@ module ROM
|
|
8
8
|
# This is used by Setup#commands DSL and its `define` block
|
9
9
|
#
|
10
10
|
# @api private
|
11
|
-
def self.build_class(name, relation, options =
|
11
|
+
def self.build_class(name, relation, options = EMPTY_HASH, &block)
|
12
12
|
type = options.fetch(:type) { name }
|
13
13
|
command_type = Inflector.classify(type)
|
14
14
|
adapter = options.fetch(:adapter)
|
data/lib/rom/setup_dsl/mapper.rb
CHANGED
@@ -8,7 +8,7 @@ module ROM
|
|
8
8
|
# This is used by Setup#relation DSL
|
9
9
|
#
|
10
10
|
# @api private
|
11
|
-
def self.build_class(name, options =
|
11
|
+
def self.build_class(name, options = EMPTY_HASH)
|
12
12
|
class_name = "ROM::Relation[#{Inflector.camelize(name)}]"
|
13
13
|
adapter = options.fetch(:adapter)
|
14
14
|
|
data/lib/rom/setup_dsl/setup.rb
CHANGED
@@ -19,7 +19,7 @@ module ROM
|
|
19
19
|
# end
|
20
20
|
#
|
21
21
|
# @api public
|
22
|
-
def relation(name, options =
|
22
|
+
def relation(name, options = EMPTY_HASH, &block)
|
23
23
|
klass_opts = { adapter: default_adapter }.merge(options)
|
24
24
|
klass = Relation.build_class(name, klass_opts)
|
25
25
|
klass.class_eval(&block) if block
|
data/lib/rom/version.rb
CHANGED
@@ -0,0 +1,177 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Setting up ROM with multiple environments' do
|
4
|
+
let(:environment) do
|
5
|
+
{
|
6
|
+
one: ROM::Environment.new,
|
7
|
+
two: ROM::Environment.new
|
8
|
+
}
|
9
|
+
end
|
10
|
+
let(:setup) do
|
11
|
+
{
|
12
|
+
one: environment[:one].setup(:memory),
|
13
|
+
two: environment[:two].setup(:memory)
|
14
|
+
}
|
15
|
+
end
|
16
|
+
let(:container) do
|
17
|
+
{
|
18
|
+
one: setup[:one].finalize,
|
19
|
+
two: setup[:two].finalize
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
before { setup }
|
24
|
+
|
25
|
+
context 'without :auto_registration plugin' do
|
26
|
+
before do
|
27
|
+
module Test
|
28
|
+
class Users < ROM::Relation[:memory]
|
29
|
+
dataset :users
|
30
|
+
end
|
31
|
+
|
32
|
+
class CreateUser < ROM::Commands::Create[:memory]
|
33
|
+
register_as :create
|
34
|
+
relation :users
|
35
|
+
result :one
|
36
|
+
end
|
37
|
+
|
38
|
+
class UserMapper < ROM::Mapper
|
39
|
+
relation :users
|
40
|
+
register_as :entity
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'registers items independently of other environments' do
|
46
|
+
environment[:one].register_relation(Test::Users)
|
47
|
+
environment[:one].register_command(Test::CreateUser)
|
48
|
+
environment[:one].register_mapper(Test::UserMapper)
|
49
|
+
|
50
|
+
expect(container[:one].relations[:users]).to be_kind_of Test::Users
|
51
|
+
expect(container[:one].commands[:users].create).to be_kind_of Test::CreateUser
|
52
|
+
expect(container[:one].mappers[:users].entity).to be_kind_of Test::UserMapper
|
53
|
+
|
54
|
+
expect { container[:two].relations[:users] }.to raise_error(
|
55
|
+
ROM::Registry::ElementNotFoundError
|
56
|
+
)
|
57
|
+
expect { container[:two].commands[:users].create }.to raise_error(
|
58
|
+
ROM::Registry::ElementNotFoundError
|
59
|
+
)
|
60
|
+
expect { container[:two].commands[:users].create }.to raise_error(
|
61
|
+
ROM::Registry::ElementNotFoundError
|
62
|
+
)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'allows use of the same identifiers in different environments' do
|
66
|
+
environment[:one].register_relation(Test::Users)
|
67
|
+
environment[:one].register_command(Test::CreateUser)
|
68
|
+
environment[:one].register_mapper(Test::UserMapper)
|
69
|
+
|
70
|
+
expect { environment[:two].register_relation(Test::Users) }.to_not raise_error
|
71
|
+
expect { environment[:two].register_command(Test::CreateUser) }.to_not raise_error
|
72
|
+
expect { environment[:two].register_mapper(Test::UserMapper) }.to_not raise_error
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context 'with :auto_registration plugin' do
|
77
|
+
context 'without if option' do
|
78
|
+
before do
|
79
|
+
environment[:one].use :auto_registration
|
80
|
+
|
81
|
+
module Test
|
82
|
+
class Users < ROM::Relation[:memory]
|
83
|
+
dataset :users
|
84
|
+
end
|
85
|
+
|
86
|
+
class CreateUser < ROM::Commands::Create[:memory]
|
87
|
+
register_as :create
|
88
|
+
relation :users
|
89
|
+
result :one
|
90
|
+
end
|
91
|
+
|
92
|
+
class UserMapper < ROM::Mapper
|
93
|
+
relation :users
|
94
|
+
register_as :entity
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'registers all classes that are defined with the given environment' do
|
100
|
+
expect(container[:one].relations[:users]).to be_kind_of Test::Users
|
101
|
+
expect(container[:one].commands[:users].create).to be_kind_of Test::CreateUser
|
102
|
+
expect(container[:one].mappers[:users].entity).to be_kind_of Test::UserMapper
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'works independently of other environments' do
|
106
|
+
expect { container[:two].relations[:users] }.to raise_error(
|
107
|
+
ROM::Registry::ElementNotFoundError
|
108
|
+
)
|
109
|
+
expect { container[:two].commands[:users].create }.to raise_error(
|
110
|
+
ROM::Registry::ElementNotFoundError
|
111
|
+
)
|
112
|
+
expect { container[:two].commands[:users].create }.to raise_error(
|
113
|
+
ROM::Registry::ElementNotFoundError
|
114
|
+
)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context 'with if option' do
|
119
|
+
before do
|
120
|
+
environment[:one].use :auto_registration, if: ->(item) do
|
121
|
+
item.to_s[/(.*)(?=::)/] == 'Test'
|
122
|
+
end
|
123
|
+
|
124
|
+
environment[:two].use :auto_registration, if: ->(item) do
|
125
|
+
item.to_s[/(.*)(?=::)/] == 'Test::API'
|
126
|
+
end
|
127
|
+
|
128
|
+
module Test
|
129
|
+
class Users < ROM::Relation[:memory]
|
130
|
+
dataset :users
|
131
|
+
end
|
132
|
+
|
133
|
+
class CreateUser < ROM::Commands::Create[:memory]
|
134
|
+
register_as :create
|
135
|
+
relation :users
|
136
|
+
result :one
|
137
|
+
end
|
138
|
+
|
139
|
+
class UserMapper < ROM::Mapper
|
140
|
+
relation :users
|
141
|
+
register_as :entity
|
142
|
+
end
|
143
|
+
|
144
|
+
module API
|
145
|
+
class Users < ROM::Relation[:memory]
|
146
|
+
dataset :users
|
147
|
+
end
|
148
|
+
|
149
|
+
class CreateUser < ROM::Commands::Create[:memory]
|
150
|
+
register_as :create
|
151
|
+
relation :users
|
152
|
+
result :one
|
153
|
+
end
|
154
|
+
|
155
|
+
class UserMapper < ROM::Mapper
|
156
|
+
relation :users
|
157
|
+
register_as :entity
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'registers all classes that are defined where proc returns true' do
|
164
|
+
expect(container[:one].relations[:users]).to be_kind_of Test::Users
|
165
|
+
expect(container[:one].commands[:users].create).to be_kind_of Test::CreateUser
|
166
|
+
expect(container[:one].mappers[:users].entity).to be_kind_of Test::UserMapper
|
167
|
+
expect(container[:two].relations[:users]).to be_kind_of Test::API::Users
|
168
|
+
expect(container[:two].commands[:users].create).to be_kind_of(
|
169
|
+
Test::API::CreateUser
|
170
|
+
)
|
171
|
+
expect(container[:two].mappers[:users].entity).to be_kind_of(
|
172
|
+
Test::API::UserMapper
|
173
|
+
)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
@@ -6,18 +6,20 @@ describe "ROM::PluginRegistry" do
|
|
6
6
|
let(:setup) { ROM.setup(:memory) }
|
7
7
|
|
8
8
|
before do
|
9
|
-
Test::
|
10
|
-
Test::
|
11
|
-
Test::
|
9
|
+
Test::EnvironmentPlugin = Module.new
|
10
|
+
Test::CommandPlugin = Module.new
|
11
|
+
Test::MapperPlugin = Module.new
|
12
|
+
Test::RelationPlugin = Module.new do
|
12
13
|
def plugged_in
|
13
14
|
"a relation"
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
17
18
|
ROM.plugins do
|
18
|
-
register :
|
19
|
-
register :
|
20
|
-
register :
|
19
|
+
register :registration, Test::EnvironmentPlugin, type: :environment
|
20
|
+
register :publisher, Test::CommandPlugin, type: :command
|
21
|
+
register :pager, Test::RelationPlugin, type: :relation
|
22
|
+
register :translater, Test::MapperPlugin, type: :mapper
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
@@ -27,6 +29,10 @@ describe "ROM::PluginRegistry" do
|
|
27
29
|
ROM.instance_variable_set('@plugin_registry', orig_plugins)
|
28
30
|
end
|
29
31
|
|
32
|
+
it "makes environment plugins available" do
|
33
|
+
expect(ROM.plugin_registry.environment[:registration].mod).to eq Test::EnvironmentPlugin
|
34
|
+
end
|
35
|
+
|
30
36
|
it "includes relation plugins" do
|
31
37
|
setup.relation(:users) do
|
32
38
|
use :pager
|
@@ -4,6 +4,7 @@ describe ROM::Relation::Composite do
|
|
4
4
|
include_context 'users and tasks'
|
5
5
|
|
6
6
|
let(:users) { rom.relation(:users) }
|
7
|
+
let(:tasks) { rom.relation(:tasks) }
|
7
8
|
|
8
9
|
let(:name_list) { proc { |r| r.map { |t| t[:name] } } }
|
9
10
|
let(:upcaser) { proc { |r| r.map(&:upcase) } }
|
@@ -15,7 +16,13 @@ describe ROM::Relation::Composite do
|
|
15
16
|
end
|
16
17
|
|
17
18
|
def sorted(other)
|
18
|
-
other.
|
19
|
+
other.source.order(:name)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
setup.relation(:tasks) do
|
24
|
+
def for_users(users)
|
25
|
+
restrict(name: users.map { |u| u[:name] })
|
19
26
|
end
|
20
27
|
end
|
21
28
|
end
|
@@ -26,6 +33,7 @@ describe ROM::Relation::Composite do
|
|
26
33
|
loaded = relation.call
|
27
34
|
|
28
35
|
expect(loaded.source).to eql(users)
|
36
|
+
|
29
37
|
expect(loaded).to match_array(%w(JANE JOE))
|
30
38
|
end
|
31
39
|
|
@@ -33,12 +41,26 @@ describe ROM::Relation::Composite do
|
|
33
41
|
relation = users >> users.sorted
|
34
42
|
loaded = relation.call
|
35
43
|
|
36
|
-
expect(loaded.source).to eql(users)
|
44
|
+
expect(loaded.source).to eql(users.sorted(users.call))
|
45
|
+
|
37
46
|
expect(loaded).to match_array([
|
38
47
|
{ name: 'Jane', email: 'jane@doe.org' },
|
39
48
|
{ name: 'Joe', email: 'joe@doe.org' }
|
40
49
|
])
|
41
50
|
end
|
51
|
+
|
52
|
+
it 'sends a relation through another composite relation' do
|
53
|
+
task_mapper = -> tasks { tasks }
|
54
|
+
relation = users.by_name('Jane') >> (tasks.for_users >> task_mapper)
|
55
|
+
|
56
|
+
loaded = relation.call
|
57
|
+
|
58
|
+
expect(loaded.source).to eql(tasks.for_users(users.by_name('Jane')))
|
59
|
+
|
60
|
+
expect(loaded).to match_array([
|
61
|
+
{ name: 'Jane', title: 'be cool', priority: 2 }
|
62
|
+
])
|
63
|
+
end
|
42
64
|
end
|
43
65
|
|
44
66
|
describe '#each' do
|
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.9.0
|
4
|
+
version: 0.9.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-08-
|
11
|
+
date: 2015-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: transproc
|
@@ -224,6 +224,7 @@ files:
|
|
224
224
|
- spec/integration/mappers/ungroup_spec.rb
|
225
225
|
- spec/integration/mappers/unwrap_spec.rb
|
226
226
|
- spec/integration/mappers/wrap_spec.rb
|
227
|
+
- spec/integration/multi_env_spec.rb
|
227
228
|
- spec/integration/multi_repo_spec.rb
|
228
229
|
- spec/integration/relations/inheritance_spec.rb
|
229
230
|
- spec/integration/relations/reading_spec.rb
|
@@ -283,9 +284,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
283
284
|
version: '0'
|
284
285
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
285
286
|
requirements:
|
286
|
-
- - "
|
287
|
+
- - ">="
|
287
288
|
- !ruby/object:Gem::Version
|
288
|
-
version:
|
289
|
+
version: '0'
|
289
290
|
requirements: []
|
290
291
|
rubyforge_project:
|
291
292
|
rubygems_version: 2.4.5
|