rom 3.2.3 → 3.3.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/CHANGELOG.md +6 -0
- data/lib/rom/association_set.rb +10 -0
- data/lib/rom/command.rb +7 -1
- data/lib/rom/command_registry.rb +6 -0
- data/lib/rom/commands/graph/class_interface.rb +1 -1
- data/lib/rom/configuration_dsl.rb +1 -1
- data/lib/rom/configuration_dsl/relation.rb +1 -1
- data/lib/rom/container.rb +8 -0
- data/lib/rom/pipeline.rb +15 -1
- data/lib/rom/relation/class_interface.rb +22 -9
- data/lib/rom/setup/finalize.rb +1 -1
- data/lib/rom/setup/finalize/finalize_relations.rb +1 -1
- data/lib/rom/version.rb +1 -1
- data/spec/unit/rom/relation/graph_spec.rb +12 -11
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a76e7a694c3096111424b115fe238285183a2e8
|
4
|
+
data.tar.gz: 27559d733a9470cbdc93878625b5c0157ec56964
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27fcabc336dde4cee458d52311b3f2eed5934bc5a12055f339a0e7051e14526d14a17fc4aa2d581aa4ccf58ae4fc83357ae87689a328e4b4c2b9c530a5ffa2f6
|
7
|
+
data.tar.gz: bf6a440ce37fe9953752c8781737361b1cae014afd78d808db2468a71de68c9e0af7bb7d6920227ce4317a25e5bba86ae64b0f1150d20eccf05416f94089108f
|
data/CHANGELOG.md
CHANGED
data/lib/rom/association_set.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
require 'dry/core/deprecations'
|
1
2
|
require 'dry/core/inflector'
|
3
|
+
|
2
4
|
require 'rom/registry'
|
3
5
|
|
4
6
|
module ROM
|
@@ -10,6 +12,14 @@ module ROM
|
|
10
12
|
if key?(key) || key?(singularize(key))
|
11
13
|
yield(self[key])
|
12
14
|
else
|
15
|
+
msg = <<-STR
|
16
|
+
Key inference will be removed in rom 4.0. You need to define :#{key} association.
|
17
|
+
=> Called at:
|
18
|
+
#{caller.join("\n")}
|
19
|
+
STR
|
20
|
+
|
21
|
+
Dry::Core::Deprecations.warn(msg)
|
22
|
+
|
13
23
|
false
|
14
24
|
end
|
15
25
|
end
|
data/lib/rom/command.rb
CHANGED
@@ -29,6 +29,7 @@ module ROM
|
|
29
29
|
include Pipeline::Operator
|
30
30
|
|
31
31
|
extend Dry::Core::ClassAttributes
|
32
|
+
extend Dry::Core::Deprecations[:rom]
|
32
33
|
extend ClassInterface
|
33
34
|
|
34
35
|
# @!method self.adapter
|
@@ -316,7 +317,12 @@ module ROM
|
|
316
317
|
self.class.build(relation, **options, curry_args: args)
|
317
318
|
end
|
318
319
|
end
|
319
|
-
|
320
|
+
|
321
|
+
# @api public
|
322
|
+
def with(*args)
|
323
|
+
self.class.warn "Command#with will change its behavior in rom 4.0. Use Command#curry instead.\n\n#{caller[0..5].join("\n")}"
|
324
|
+
curry(*args)
|
325
|
+
end
|
320
326
|
|
321
327
|
# Compose this command with other commands
|
322
328
|
#
|
data/lib/rom/command_registry.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'dry/core/deprecations'
|
2
|
+
|
1
3
|
require 'rom/types'
|
2
4
|
require 'rom/commands/result'
|
3
5
|
|
@@ -7,6 +9,8 @@ module ROM
|
|
7
9
|
# @api public
|
8
10
|
class CommandRegistry
|
9
11
|
extend Initializer
|
12
|
+
extend Dry::Core::Deprecations[:rom]
|
13
|
+
|
10
14
|
include Commands
|
11
15
|
|
12
16
|
CommandNotFoundError = Class.new(KeyError)
|
@@ -43,6 +47,8 @@ module ROM
|
|
43
47
|
#
|
44
48
|
# @api public
|
45
49
|
def try(&block)
|
50
|
+
self.class.warn "CommandRegistry#try will be removed in rom 4.0"
|
51
|
+
|
46
52
|
response = block.call
|
47
53
|
|
48
54
|
if response.is_a?(Command) || response.is_a?(Composite)
|
@@ -21,7 +21,7 @@ module ROM
|
|
21
21
|
def relation(name, options = EMPTY_HASH, &block)
|
22
22
|
klass_opts = { adapter: default_adapter }.merge(options)
|
23
23
|
klass = Relation.build_class(name, klass_opts)
|
24
|
-
klass.register_as(name)
|
24
|
+
klass.register_as(name, deprecation: false)
|
25
25
|
klass.class_eval(&block) if block
|
26
26
|
register_relation(klass)
|
27
27
|
klass
|
data/lib/rom/container.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'dry/core/deprecations'
|
2
|
+
|
1
3
|
require 'rom/relation/loaded'
|
2
4
|
require 'rom/commands/graph'
|
3
5
|
require 'rom/commands/graph/builder'
|
@@ -97,6 +99,8 @@ module ROM
|
|
97
99
|
#
|
98
100
|
# @api public
|
99
101
|
class Container
|
102
|
+
extend Dry::Core::Deprecations[:rom]
|
103
|
+
|
100
104
|
include Dry::Equalizer(:gateways, :relations, :mappers, :commands)
|
101
105
|
|
102
106
|
# @!attribute [r] gateways
|
@@ -150,6 +154,8 @@ module ROM
|
|
150
154
|
#
|
151
155
|
# @api public
|
152
156
|
def relation(name, &block)
|
157
|
+
Dry::Core::Deprecations.warn("#{self.class}#relation is deprecated and will be removed in 4.0\n\n#{caller[0..5].join("\n")}")
|
158
|
+
|
153
159
|
relation =
|
154
160
|
if block
|
155
161
|
yield(relations[name])
|
@@ -184,6 +190,8 @@ module ROM
|
|
184
190
|
#
|
185
191
|
# @api public
|
186
192
|
def command(options = nil)
|
193
|
+
Dry::Core::Deprecations.warn("#{self.class}#command is deprecated and will be removed in 4.0\n\n#{caller[0..5].join("\n")}")
|
194
|
+
|
187
195
|
case options
|
188
196
|
when Symbol
|
189
197
|
name = options
|
data/lib/rom/pipeline.rb
CHANGED
@@ -40,7 +40,21 @@ module ROM
|
|
40
40
|
[self, *names.map { |name| mappers[name] }]
|
41
41
|
.reduce { |a, e| composite_class.new(a, e) }
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
|
+
# @api public
|
45
|
+
def as(*names)
|
46
|
+
new_meth = names[0].is_a?(Class) ? 'map_to' : 'map_with'
|
47
|
+
|
48
|
+
msg = <<-STR
|
49
|
+
Relation#as will change behavior in 4.0. Use `#{new_meth}` instead
|
50
|
+
=> Called at:
|
51
|
+
#{caller.join("\n")}
|
52
|
+
STR
|
53
|
+
|
54
|
+
Dry::Core::Deprecations.warn(msg)
|
55
|
+
|
56
|
+
map_with(*names)
|
57
|
+
end
|
44
58
|
|
45
59
|
# Forwards messages to the left side of a pipeline
|
46
60
|
#
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'set'
|
2
2
|
|
3
3
|
require 'dry/core/inflector'
|
4
|
+
require 'dry/core/deprecations'
|
4
5
|
require 'dry/core/constants'
|
5
6
|
|
6
7
|
require 'rom/auto_curry'
|
@@ -13,6 +14,8 @@ module ROM
|
|
13
14
|
class Relation
|
14
15
|
# @api public
|
15
16
|
module ClassInterface
|
17
|
+
extend Dry::Core::Deprecations[:rom]
|
18
|
+
|
16
19
|
include Dry::Core::Constants
|
17
20
|
|
18
21
|
# Register adapter relation subclasses during setup phase
|
@@ -76,9 +79,15 @@ module ROM
|
|
76
79
|
# @param [Symbol] value The name of the dataset
|
77
80
|
#
|
78
81
|
# @api public
|
79
|
-
def self.dataset(
|
80
|
-
|
81
|
-
|
82
|
+
def self.dataset(*args, deprecation: true, &block)
|
83
|
+
if block
|
84
|
+
dataset_proc(block)
|
85
|
+
elsif args.size > 0
|
86
|
+
if deprecation
|
87
|
+
warn("Relation.dataset is deprecated in favor of schema settings\n\n#{caller[0..5].join("\n")}")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
super(*args)
|
82
91
|
end
|
83
92
|
|
84
93
|
# Set or get name under which a relation will be registered
|
@@ -88,8 +97,12 @@ module ROM
|
|
88
97
|
# @return [Symbol]
|
89
98
|
#
|
90
99
|
# @api public
|
91
|
-
def self.register_as(
|
92
|
-
if
|
100
|
+
def self.register_as(*args, deprecation: true)
|
101
|
+
if deprecation && args.size > 0
|
102
|
+
warn("Relation.register_as is deprecated in favor of schema settings\n\n#{caller[0..5].join("\n")}")
|
103
|
+
end
|
104
|
+
|
105
|
+
if args.empty?
|
93
106
|
return @register_as if defined?(@register_as)
|
94
107
|
|
95
108
|
super_val = super()
|
@@ -100,7 +113,7 @@ module ROM
|
|
100
113
|
super_val == dataset ? default_name : super_val
|
101
114
|
end
|
102
115
|
else
|
103
|
-
super
|
116
|
+
super(*args)
|
104
117
|
end
|
105
118
|
end
|
106
119
|
|
@@ -158,12 +171,12 @@ module ROM
|
|
158
171
|
if defined?(@schema)
|
159
172
|
@schema
|
160
173
|
elsif block || infer
|
161
|
-
self.dataset(dataset) if dataset
|
174
|
+
self.dataset(dataset, deprecation: false) if dataset
|
162
175
|
|
163
176
|
if as
|
164
|
-
self.register_as(as)
|
177
|
+
self.register_as(as, deprecation: false)
|
165
178
|
else
|
166
|
-
self.register_as(self.dataset) unless register_as
|
179
|
+
self.register_as(self.dataset, deprecation: false) unless register_as
|
167
180
|
end
|
168
181
|
|
169
182
|
name = Name[register_as, self.dataset]
|
data/lib/rom/setup/finalize.rb
CHANGED
@@ -120,7 +120,7 @@ module ROM
|
|
120
120
|
if infer_relation?(gateway, name)
|
121
121
|
klass = ROM::ConfigurationDSL::Relation.build_class(name, adapter: adapter_for(gateway))
|
122
122
|
klass.gateway(gateway)
|
123
|
-
klass.dataset(name)
|
123
|
+
klass.dataset(name, deprecation: false)
|
124
124
|
@relation_classes << klass
|
125
125
|
else
|
126
126
|
next
|
@@ -58,7 +58,7 @@ module ROM
|
|
58
58
|
plugin.apply_to(klass)
|
59
59
|
end
|
60
60
|
|
61
|
-
dataset = gateway.dataset(klass.dataset).instance_exec(klass, &ds_proc)
|
61
|
+
dataset = gateway.dataset(klass.schema.name.dataset).instance_exec(klass, &ds_proc)
|
62
62
|
|
63
63
|
options = { __registry__: registry, schema: schema.with(relations: registry), **plugin_options }
|
64
64
|
|
data/lib/rom/version.rb
CHANGED
@@ -79,27 +79,28 @@ RSpec.describe ROM::Relation::Graph do
|
|
79
79
|
|
80
80
|
describe '#call' do
|
81
81
|
it 'materializes relations' do
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
82
|
+
root, nodes = graph.call.to_a
|
83
|
+
|
84
|
+
expect(root.to_a).to eql(users_relation.to_a)
|
85
|
+
expect(nodes.flatten).to eql(tasks_relation.to_a)
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
89
|
describe '#to_a' do
|
90
90
|
it 'coerces to an array' do
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
91
|
+
root, nodes = graph.to_a
|
92
|
+
|
93
|
+
expect(root.to_a).to eql(users_relation.to_a)
|
94
|
+
expect(nodes.flatten).to eql(tasks_relation.for_users(users_relation).to_a)
|
95
95
|
end
|
96
96
|
|
97
97
|
it 'returns empty arrays when left was empty' do
|
98
98
|
graph = ROM::Relation::Graph.new(users_relation.by_name('Not here'), [tasks_relation.for_users])
|
99
99
|
|
100
|
-
|
101
|
-
|
102
|
-
|
100
|
+
root, nodes = graph.to_a
|
101
|
+
|
102
|
+
expect(root).to be_empty
|
103
|
+
expect(nodes.flatten).to be_empty
|
103
104
|
end
|
104
105
|
end
|
105
106
|
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: 3.
|
4
|
+
version: 3.3.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: 2017-
|
11
|
+
date: 2017-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -401,7 +401,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
401
401
|
version: '0'
|
402
402
|
requirements: []
|
403
403
|
rubyforge_project:
|
404
|
-
rubygems_version: 2.6.
|
404
|
+
rubygems_version: 2.6.12
|
405
405
|
signing_key:
|
406
406
|
specification_version: 4
|
407
407
|
summary: Ruby Object Mapper
|