rom-core 5.1.2 → 5.2.1
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/lib/rom/array_dataset.rb +4 -4
- data/lib/rom/association_set.rb +2 -3
- data/lib/rom/associations/definitions/abstract.rb +2 -2
- data/lib/rom/associations/many_to_many.rb +1 -0
- data/lib/rom/attribute.rb +5 -4
- data/lib/rom/auto_curry.rb +2 -0
- data/lib/rom/command.rb +6 -6
- data/lib/rom/command_compiler.rb +5 -7
- data/lib/rom/commands/class_interface.rb +7 -7
- data/lib/rom/commands/composite.rb +1 -1
- data/lib/rom/commands/graph/input_evaluator.rb +1 -1
- data/lib/rom/commands/lazy.rb +2 -1
- data/lib/rom/commands/lazy/create.rb +1 -1
- data/lib/rom/commands/lazy/update.rb +3 -3
- data/lib/rom/configuration.rb +5 -5
- data/lib/rom/configuration_dsl/relation.rb +1 -1
- data/lib/rom/constants.rb +1 -1
- data/lib/rom/core/version.rb +1 -1
- data/lib/rom/data_proxy.rb +3 -2
- data/lib/rom/enumerable_dataset.rb +4 -4
- data/lib/rom/environment.rb +0 -1
- data/lib/rom/header/attribute.rb +2 -4
- data/lib/rom/initializer.rb +9 -7
- data/lib/rom/lint/gateway.rb +1 -3
- data/lib/rom/lint/linter.rb +3 -4
- data/lib/rom/lint/spec.rb +2 -2
- data/lib/rom/mapper.rb +4 -3
- data/lib/rom/mapper/attribute_dsl.rb +5 -5
- data/lib/rom/mapper/dsl.rb +2 -5
- data/lib/rom/mapper/model_dsl.rb +2 -1
- data/lib/rom/mapper_compiler.rb +2 -1
- data/lib/rom/mapper_registry.rb +3 -3
- data/lib/rom/memory/dataset.rb +4 -3
- data/lib/rom/pipeline.rb +3 -1
- data/lib/rom/plugin.rb +3 -3
- data/lib/rom/plugin_registry.rb +1 -1
- data/lib/rom/plugins/command/schema.rb +2 -2
- data/lib/rom/plugins/relation/instrumentation.rb +1 -1
- data/lib/rom/plugins/relation/registry_reader.rb +4 -3
- data/lib/rom/plugins/schema/timestamps.rb +4 -6
- data/lib/rom/processor.rb +1 -1
- data/lib/rom/processor/transproc.rb +16 -19
- data/lib/rom/registry.rb +17 -12
- data/lib/rom/relation.rb +6 -6
- data/lib/rom/relation/class_interface.rb +9 -8
- data/lib/rom/relation/curried.rb +3 -2
- data/lib/rom/relation/loaded.rb +1 -0
- data/lib/rom/relation/materializable.rb +1 -0
- data/lib/rom/relation/name.rb +1 -1
- data/lib/rom/relation_registry.rb +1 -1
- data/lib/rom/schema.rb +22 -22
- data/lib/rom/schema/associations_dsl.rb +17 -17
- data/lib/rom/schema/dsl.rb +6 -6
- data/lib/rom/schema/inferrer.rb +2 -4
- data/lib/rom/setup.rb +2 -2
- data/lib/rom/setup/auto_registration.rb +1 -1
- data/lib/rom/setup/auto_registration_strategies/base.rb +1 -1
- data/lib/rom/setup/auto_registration_strategies/custom_namespace.rb +4 -4
- data/lib/rom/setup/auto_registration_strategies/no_namespace.rb +1 -1
- data/lib/rom/setup/auto_registration_strategies/with_namespace.rb +1 -1
- data/lib/rom/setup/finalize/finalize_commands.rb +7 -4
- data/lib/rom/setup/finalize/finalize_mappers.rb +9 -8
- data/lib/rom/setup/finalize/finalize_relations.rb +2 -2
- data/lib/rom/struct.rb +1 -1
- data/lib/rom/struct_compiler.rb +6 -5
- data/lib/rom/support/memoizable.rb +3 -2
- data/lib/rom/transaction.rb +1 -1
- data/lib/rom/transformer.rb +1 -0
- metadata +3 -3
data/lib/rom/setup.rb
CHANGED
@@ -46,8 +46,8 @@ module ROM
|
|
46
46
|
# @return [Setup]
|
47
47
|
#
|
48
48
|
# @api public
|
49
|
-
def auto_registration(directory, options
|
50
|
-
auto_registration = AutoRegistration.new(directory, options)
|
49
|
+
def auto_registration(directory, **options)
|
50
|
+
auto_registration = AutoRegistration.new(directory, **options)
|
51
51
|
auto_registration.relations.map { |r| register_relation(r) }
|
52
52
|
auto_registration.commands.map { |r| register_command(r) }
|
53
53
|
auto_registration.mappers.map { |r| register_mapper(r) }
|
@@ -43,7 +43,7 @@ module ROM
|
|
43
43
|
|
44
44
|
# @!attribute [r] globs
|
45
45
|
# @return [Hash] File globbing functions for each component dir
|
46
|
-
option :globs, default:
|
46
|
+
option :globs, default: lambda {
|
47
47
|
Hash[
|
48
48
|
component_dirs.map { |component, path|
|
49
49
|
[component, directory.join("#{path}/**/*.rb")]
|
@@ -32,7 +32,7 @@ module ROM
|
|
32
32
|
attempted = []
|
33
33
|
|
34
34
|
potential.map do |path|
|
35
|
-
const_fragment = path.join(
|
35
|
+
const_fragment = path.join('::')
|
36
36
|
|
37
37
|
constant = "#{namespace}::#{const_fragment}"
|
38
38
|
|
@@ -54,8 +54,8 @@ module ROM
|
|
54
54
|
|
55
55
|
# @api private
|
56
56
|
def name_error_message(attempted)
|
57
|
-
|
58
|
-
|
57
|
+
'required file does not define expected constant name; either ' \
|
58
|
+
'register your constant explicitly of try following the path' \
|
59
59
|
"naming convention like:\n\n\t- #{attempted.join("\n\t- ")}\n"
|
60
60
|
end
|
61
61
|
|
@@ -76,7 +76,7 @@ module ROM
|
|
76
76
|
|
77
77
|
# @api private
|
78
78
|
def file_path
|
79
|
-
File.dirname(file).split(
|
79
|
+
File.dirname(file).split('/') - directory.to_s.split('/')
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -41,13 +41,16 @@ module ROM
|
|
41
41
|
klass.build(relation)
|
42
42
|
end
|
43
43
|
|
44
|
-
registry = Registry.new
|
44
|
+
registry = Registry.new
|
45
45
|
compiler = CommandCompiler.new(@gateways, @relations, registry, notifications)
|
46
46
|
|
47
47
|
@relations.each do |(name, relation)|
|
48
|
-
commands.
|
49
|
-
|
50
|
-
|
48
|
+
rel_commands = commands.select { |c| c.relation.name == relation.name }
|
49
|
+
|
50
|
+
rel_commands.each do |command|
|
51
|
+
identifier = command.class.register_as || command.class.default_name
|
52
|
+
relation.commands.elements[identifier] = command
|
53
|
+
end
|
51
54
|
|
52
55
|
relation.commands.set_compiler(compiler)
|
53
56
|
relation.commands.set_mappers(relation.mappers)
|
@@ -14,10 +14,10 @@ module ROM
|
|
14
14
|
|
15
15
|
check_duplicate_registered_mappers
|
16
16
|
|
17
|
-
@registry_hash = [@mapper_classes.map(&:base_relation) + @mapper_objects.keys]
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
@registry_hash = [@mapper_classes.map(&:base_relation) + @mapper_objects.keys]
|
18
|
+
.flatten
|
19
|
+
.uniq
|
20
|
+
.each_with_object({}) { |n, h| h[n] = {} }
|
21
21
|
end
|
22
22
|
|
23
23
|
# @api private
|
@@ -40,8 +40,9 @@ module ROM
|
|
40
40
|
private
|
41
41
|
|
42
42
|
def check_duplicate_registered_mappers
|
43
|
-
mapper_relation_register = mapper_classes.map {|mapper_class| [mapper_class.relation, mapper_class.register_as].compact }
|
43
|
+
mapper_relation_register = mapper_classes.map { |mapper_class| [mapper_class.relation, mapper_class.register_as].compact }
|
44
44
|
return if mapper_relation_register.uniq.count == mapper_classes.count
|
45
|
+
|
45
46
|
mapper_relation_register.select { |relation_register_as| mapper_relation_register.count(relation_register_as) > 1 }
|
46
47
|
.uniq
|
47
48
|
.each do |duplicated_mappers|
|
@@ -52,9 +53,9 @@ module ROM
|
|
52
53
|
end
|
53
54
|
|
54
55
|
def build_mappers(relation_name)
|
55
|
-
mapper_classes
|
56
|
-
select { |klass| klass.base_relation == relation_name }
|
57
|
-
each_with_object({}) { |klass, h| h[klass.register_as || klass.relation] = klass.build
|
56
|
+
mapper_classes
|
57
|
+
.select { |klass| klass.base_relation == relation_name }
|
58
|
+
.each_with_object({}) { |klass, h| h[klass.register_as || klass.relation] = klass.build }
|
58
59
|
end
|
59
60
|
end
|
60
61
|
end
|
@@ -43,7 +43,7 @@ module ROM
|
|
43
43
|
"Relation with name #{key.inspect} registered more than once"
|
44
44
|
end
|
45
45
|
|
46
|
-
klass.use(:registry_reader, relation_names)
|
46
|
+
klass.use(:registry_reader, relations: relation_names)
|
47
47
|
|
48
48
|
notifications.trigger('configuration.relations.class.ready', relation: klass, adapter: klass.adapter)
|
49
49
|
|
@@ -105,7 +105,7 @@ module ROM
|
|
105
105
|
|
106
106
|
options = { __registry__: registry, mappers: mapper_registry(rel_key, klass), schema: schema, **plugin_options }
|
107
107
|
|
108
|
-
klass.new(dataset, options)
|
108
|
+
klass.new(dataset, **options)
|
109
109
|
end
|
110
110
|
|
111
111
|
# @api private
|
data/lib/rom/struct.rb
CHANGED
@@ -102,7 +102,7 @@ module ROM
|
|
102
102
|
def method_missing(*)
|
103
103
|
super
|
104
104
|
rescue NameError => error
|
105
|
-
raise MissingAttribute.new { "#{
|
105
|
+
raise MissingAttribute.new { "#{error.message} (attribute not loaded?)" }
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
data/lib/rom/struct_compiler.rb
CHANGED
@@ -20,10 +20,11 @@ module ROM
|
|
20
20
|
option :cache, default: -> { Cache.new }
|
21
21
|
|
22
22
|
# @api private
|
23
|
-
def initialize(*
|
23
|
+
def initialize(*)
|
24
24
|
super
|
25
25
|
@cache = cache.namespaced(:structs)
|
26
26
|
end
|
27
|
+
ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)
|
27
28
|
|
28
29
|
# Build a struct class based on relation header ast
|
29
30
|
#
|
@@ -84,7 +85,7 @@ module ROM
|
|
84
85
|
|
85
86
|
# @api private
|
86
87
|
def visit_constrained(node)
|
87
|
-
definition,
|
88
|
+
definition, = node
|
88
89
|
|
89
90
|
visit(definition)
|
90
91
|
end
|
@@ -97,9 +98,9 @@ module ROM
|
|
97
98
|
|
98
99
|
# @api private
|
99
100
|
def build_class(name, parent, ns, &block)
|
100
|
-
Dry::Core::ClassBuilder
|
101
|
-
new(name: class_name(name), parent: parent, namespace: ns)
|
102
|
-
call(&block)
|
101
|
+
Dry::Core::ClassBuilder
|
102
|
+
.new(name: class_name(name), parent: parent, namespace: ns)
|
103
|
+
.call(&block)
|
103
104
|
end
|
104
105
|
|
105
106
|
# @api private
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module ROM
|
4
4
|
# @api private
|
5
5
|
module Memoizable
|
6
|
-
MEMOIZED_HASH = {}
|
6
|
+
MEMOIZED_HASH = {}.freeze
|
7
7
|
|
8
8
|
module ClassInterface
|
9
9
|
# @api private
|
@@ -16,6 +16,7 @@ module ROM
|
|
16
16
|
obj.instance_variable_set(:'@__memoized__', MEMOIZED_HASH.dup)
|
17
17
|
obj
|
18
18
|
end
|
19
|
+
ruby2_keywords(:new) if respond_to?(:ruby2_keywords, true)
|
19
20
|
end
|
20
21
|
|
21
22
|
def self.included(klass)
|
@@ -44,7 +45,7 @@ module ROM
|
|
44
45
|
names.each do |name|
|
45
46
|
meth = klass.instance_method(name)
|
46
47
|
|
47
|
-
if meth.parameters.
|
48
|
+
if !meth.parameters.empty?
|
48
49
|
define_method(name) do |*args|
|
49
50
|
__memoized__[:"#{name}_#{args.hash}"] ||= super(*args)
|
50
51
|
end
|
data/lib/rom/transaction.rb
CHANGED
data/lib/rom/transformer.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rom-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.1
|
4
|
+
version: 5.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -342,7 +342,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
342
342
|
- !ruby/object:Gem::Version
|
343
343
|
version: '0'
|
344
344
|
requirements: []
|
345
|
-
rubygems_version: 3.0.
|
345
|
+
rubygems_version: 3.1.0.pre3
|
346
346
|
signing_key:
|
347
347
|
specification_version: 4
|
348
348
|
summary: Ruby Object Mapper
|