rom-core 4.0.0.beta1
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 +7 -0
- data/CHANGELOG.md +603 -0
- data/LICENSE +20 -0
- data/README.md +18 -0
- data/lib/rom-core.rb +1 -0
- data/lib/rom/array_dataset.rb +44 -0
- data/lib/rom/association_set.rb +16 -0
- data/lib/rom/associations/abstract.rb +135 -0
- data/lib/rom/associations/definitions.rb +5 -0
- data/lib/rom/associations/definitions/abstract.rb +116 -0
- data/lib/rom/associations/definitions/many_to_many.rb +24 -0
- data/lib/rom/associations/definitions/many_to_one.rb +11 -0
- data/lib/rom/associations/definitions/one_to_many.rb +11 -0
- data/lib/rom/associations/definitions/one_to_one.rb +11 -0
- data/lib/rom/associations/definitions/one_to_one_through.rb +11 -0
- data/lib/rom/associations/many_to_many.rb +81 -0
- data/lib/rom/associations/many_to_one.rb +37 -0
- data/lib/rom/associations/one_to_many.rb +37 -0
- data/lib/rom/associations/one_to_one.rb +8 -0
- data/lib/rom/associations/one_to_one_through.rb +8 -0
- data/lib/rom/associations/through_identifier.rb +39 -0
- data/lib/rom/auto_curry.rb +55 -0
- data/lib/rom/cache.rb +46 -0
- data/lib/rom/command.rb +488 -0
- data/lib/rom/command_compiler.rb +239 -0
- data/lib/rom/command_proxy.rb +24 -0
- data/lib/rom/command_registry.rb +141 -0
- data/lib/rom/commands.rb +3 -0
- data/lib/rom/commands/class_interface.rb +270 -0
- data/lib/rom/commands/composite.rb +53 -0
- data/lib/rom/commands/create.rb +13 -0
- data/lib/rom/commands/delete.rb +14 -0
- data/lib/rom/commands/graph.rb +88 -0
- data/lib/rom/commands/graph/class_interface.rb +62 -0
- data/lib/rom/commands/graph/input_evaluator.rb +62 -0
- data/lib/rom/commands/lazy.rb +99 -0
- data/lib/rom/commands/lazy/create.rb +23 -0
- data/lib/rom/commands/lazy/delete.rb +27 -0
- data/lib/rom/commands/lazy/update.rb +34 -0
- data/lib/rom/commands/result.rb +96 -0
- data/lib/rom/commands/update.rb +14 -0
- data/lib/rom/configuration.rb +114 -0
- data/lib/rom/configuration_dsl.rb +87 -0
- data/lib/rom/configuration_dsl/command.rb +41 -0
- data/lib/rom/configuration_dsl/command_dsl.rb +35 -0
- data/lib/rom/configuration_dsl/relation.rb +26 -0
- data/lib/rom/configuration_plugin.rb +17 -0
- data/lib/rom/constants.rb +64 -0
- data/lib/rom/container.rb +147 -0
- data/lib/rom/core.rb +46 -0
- data/lib/rom/create_container.rb +60 -0
- data/lib/rom/data_proxy.rb +94 -0
- data/lib/rom/enumerable_dataset.rb +68 -0
- data/lib/rom/environment.rb +70 -0
- data/lib/rom/gateway.rb +184 -0
- data/lib/rom/global.rb +58 -0
- data/lib/rom/global/plugin_dsl.rb +47 -0
- data/lib/rom/initializer.rb +64 -0
- data/lib/rom/lint/enumerable_dataset.rb +54 -0
- data/lib/rom/lint/gateway.rb +120 -0
- data/lib/rom/lint/linter.rb +78 -0
- data/lib/rom/lint/spec.rb +20 -0
- data/lib/rom/lint/test.rb +98 -0
- data/lib/rom/mapper_registry.rb +24 -0
- data/lib/rom/memory.rb +4 -0
- data/lib/rom/memory/associations.rb +4 -0
- data/lib/rom/memory/associations/many_to_many.rb +10 -0
- data/lib/rom/memory/associations/many_to_one.rb +10 -0
- data/lib/rom/memory/associations/one_to_many.rb +10 -0
- data/lib/rom/memory/associations/one_to_one.rb +10 -0
- data/lib/rom/memory/commands.rb +56 -0
- data/lib/rom/memory/dataset.rb +97 -0
- data/lib/rom/memory/gateway.rb +64 -0
- data/lib/rom/memory/relation.rb +62 -0
- data/lib/rom/memory/schema.rb +23 -0
- data/lib/rom/memory/storage.rb +59 -0
- data/lib/rom/memory/types.rb +9 -0
- data/lib/rom/pipeline.rb +105 -0
- data/lib/rom/plugin.rb +25 -0
- data/lib/rom/plugin_base.rb +45 -0
- data/lib/rom/plugin_registry.rb +197 -0
- data/lib/rom/plugins/command/schema.rb +37 -0
- data/lib/rom/plugins/configuration/configuration_dsl.rb +21 -0
- data/lib/rom/plugins/relation/instrumentation.rb +51 -0
- data/lib/rom/plugins/relation/registry_reader.rb +44 -0
- data/lib/rom/plugins/schema/timestamps.rb +58 -0
- data/lib/rom/registry.rb +71 -0
- data/lib/rom/relation.rb +548 -0
- data/lib/rom/relation/class_interface.rb +282 -0
- data/lib/rom/relation/commands.rb +23 -0
- data/lib/rom/relation/composite.rb +46 -0
- data/lib/rom/relation/curried.rb +103 -0
- data/lib/rom/relation/graph.rb +197 -0
- data/lib/rom/relation/loaded.rb +127 -0
- data/lib/rom/relation/materializable.rb +66 -0
- data/lib/rom/relation/name.rb +111 -0
- data/lib/rom/relation/view_dsl.rb +64 -0
- data/lib/rom/relation/wrap.rb +83 -0
- data/lib/rom/relation_registry.rb +10 -0
- data/lib/rom/schema.rb +437 -0
- data/lib/rom/schema/associations_dsl.rb +195 -0
- data/lib/rom/schema/attribute.rb +419 -0
- data/lib/rom/schema/dsl.rb +164 -0
- data/lib/rom/schema/inferrer.rb +66 -0
- data/lib/rom/schema_plugin.rb +27 -0
- data/lib/rom/setup.rb +68 -0
- data/lib/rom/setup/auto_registration.rb +74 -0
- data/lib/rom/setup/auto_registration_strategies/base.rb +16 -0
- data/lib/rom/setup/auto_registration_strategies/custom_namespace.rb +63 -0
- data/lib/rom/setup/auto_registration_strategies/no_namespace.rb +20 -0
- data/lib/rom/setup/auto_registration_strategies/with_namespace.rb +18 -0
- data/lib/rom/setup/finalize.rb +103 -0
- data/lib/rom/setup/finalize/finalize_commands.rb +60 -0
- data/lib/rom/setup/finalize/finalize_mappers.rb +56 -0
- data/lib/rom/setup/finalize/finalize_relations.rb +135 -0
- data/lib/rom/support/configurable.rb +85 -0
- data/lib/rom/support/memoizable.rb +58 -0
- data/lib/rom/support/notifications.rb +103 -0
- data/lib/rom/transaction.rb +24 -0
- data/lib/rom/types.rb +26 -0
- data/lib/rom/version.rb +5 -0
- metadata +289 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ef15d608c1f83a62e5fda73922905f3ea6b4ac64
|
4
|
+
data.tar.gz: 0756e26ace05072f5717d47f7738e21a43e322c7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 46aecaac6f9e294a7acbadd9dcd5b5c56a2b08a4bd62e15b6d408089b1ab130149a7f9d02000d78b83ed41947d0e04648be6ae30c6591428db59e3b84615d2c1
|
7
|
+
data.tar.gz: 8f6c5783b58df407395d2c25e1b3389c4b011d49922a9c73cd2f8e613c7464ce5122a03ddccc4311844e28adeac37e5893fcbc893277cb93805cdecd47a71aa3
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,603 @@
|
|
1
|
+
# v4.0.0 to-be-released
|
2
|
+
|
3
|
+
Previous `rom` gem was renamed to `rom-core`
|
4
|
+
|
5
|
+
## Added
|
6
|
+
|
7
|
+
* Relations can be configured with `auto_map true` which brings auto-mapping functionality known from rom-repository (solnic)
|
8
|
+
* Relations can be configured with `auto_struct true` which brings auto-struct functionality known from rom-repository (solnic)
|
9
|
+
* `Relation#map_to(model)` which replaced `as` (solnic)
|
10
|
+
* `Relation#wrap` is now part of core API and requires associations to be configured (solnic)
|
11
|
+
* `Relation#combine` automatically returns a relation graph based on configured associations (solnic)
|
12
|
+
* `Relation#command` which automatically creates a command for a given relation, supports graphs too (solnic)
|
13
|
+
* `Relation::to_ast` which returns an AST representation of a relation. This can be used to infer other objects based on relation information (solnic)
|
14
|
+
* `Relation::Name#as` which returns an aliased relation name (solnic)
|
15
|
+
* Association DSL supports `:override` option which will use configured `:view` as the relation used by association (solnic)
|
16
|
+
* Associations are now part of core API and available to all adapters, cross-adapter associations are supported too via `:override` option (solnic)
|
17
|
+
* `Schema#primary_key_name` and `Schema#primary_key_names` are now part of core schema API (solnic)
|
18
|
+
* `Schema#to_ast` which returns an AST representation of a relation schema (flash-gordon)
|
19
|
+
* Plugin system supports schema plugins (flash-gordon)
|
20
|
+
* Setup and finalization is now based on events, which you can subscribe to. This allows plugin and adapter developers to hook into components in a simple and stable way (solnic)
|
21
|
+
|
22
|
+
## Changed
|
23
|
+
|
24
|
+
* Works with MRI >= 2.2
|
25
|
+
* [BREAKING] Inferring relations from database schema **has been removed**. You need to define relations explicitly now (solnic)
|
26
|
+
* [BREAKING] Relations have `auto_map` **turned on by default**. This means that wraps and graphs return nested data structures automatically (solnic)
|
27
|
+
* [BREAKING] `Relation#combine` behavior from previous versions is now provided by `Relation#graph` (solnic)
|
28
|
+
* [BREAKING] `Relation#as` now returns a new relation with aliased name, use `Relation#map_with(*list-of-mapper-ids)` or `Relation#map_to(model)` if you just want to map to custom models (solnic)
|
29
|
+
* [BREAKING] `Relation.register_as(:bar)` is removed in favor of `schema(:foo, as: :bar)` (solnic)
|
30
|
+
* [BREAKING] `Relation.dataset(:foo)` is removed in favor of `schema(:foo)`. Passing a block still works like before (solnic)
|
31
|
+
* Separation between relations that are standalone or registrable in a registry is gone. All relations have names and schemas now.
|
32
|
+
They are automatically set to defaults. In practice this means you can instantiate a relation object manually and it'll Just Work (solnic)
|
33
|
+
* Mapper and command objects are cached locally within a given rom container (solnic)
|
34
|
+
|
35
|
+
## Internal
|
36
|
+
|
37
|
+
* [BREAKING] `Relation::Curried#name` was renamed to `Relation::Curried#view` (solnic)
|
38
|
+
* [BREAKING] `Association::Name` was removed in favor of using `Relation::Name` (solnic)
|
39
|
+
* Relations no longer use `method_missing` for accessing other relations from the registry (solnic)
|
40
|
+
|
41
|
+
## Fixed
|
42
|
+
|
43
|
+
* Inferred struct attributes use simplified types. This fixed a problem when read types from relation schemas would be applied twice (flash-gordon)
|
44
|
+
* Trying to register a mapper with the same identifier more than once will raise an error (GustavoCaso)
|
45
|
+
|
46
|
+
# v3.2.2 2017-05-05
|
47
|
+
|
48
|
+
## Changed
|
49
|
+
|
50
|
+
* [internal] Compatibility with `dry-core` v0.3.0 (flash-gordon)
|
51
|
+
|
52
|
+
[Compare v3.2.1...v3.2.2](https://github.com/rom-rb/rom/compare/v3.2.1...v3.2.2)
|
53
|
+
|
54
|
+
# v3.2.1 2017-05-02
|
55
|
+
|
56
|
+
## Changed
|
57
|
+
|
58
|
+
* [internal] `ROM::Schema::Attribute` uses `Initializer` now (flash-gordon)
|
59
|
+
|
60
|
+
[Compare v3.2.0...v3.2.1](https://github.com/rom-rb/rom/compare/v3.2.0...v3.2.1)
|
61
|
+
|
62
|
+
# v3.2.0 2017-03-25
|
63
|
+
|
64
|
+
## Changed
|
65
|
+
|
66
|
+
* `dry-initializer` was updated to `1.3`, this is a minor change, but leads to some incompatibilities with existing adapters, hence `3.2.0` shall be released (flash-gordon)
|
67
|
+
|
68
|
+
[Compare v3.1.0...v3.2.0](https://github.com/rom-rb/rom/compare/v3.1.0...v3.2.0)
|
69
|
+
|
70
|
+
# v3.1.0 2017-03-01
|
71
|
+
|
72
|
+
## Added
|
73
|
+
|
74
|
+
* New configuration DSL for configuring plugins (solnic)
|
75
|
+
* Instrumentation plugin for relations (solnic)
|
76
|
+
* New `ROM::Relation::Loaded#empty?` method (solnic)
|
77
|
+
* New `ROM::Relation::Graph#with_nodes` which returns a new graph with new nodes (solnic)
|
78
|
+
* New `ROM::Schema#empty` which returns an empty schema (solnic)
|
79
|
+
|
80
|
+
[Compare v3.0.3...v3.1.0](https://github.com/rom-rb/rom/compare/v3.0.3...v3.1.0)
|
81
|
+
|
82
|
+
# v3.0.3 2017-02-24
|
83
|
+
|
84
|
+
## Fixed
|
85
|
+
|
86
|
+
* Curried relations when called without args while having some args filled in will return itself (solnic)
|
87
|
+
|
88
|
+
[Compare v3.0.2...v3.0.3](https://github.com/rom-rb/rom/compare/v3.0.2...v3.0.3)
|
89
|
+
|
90
|
+
# v3.0.2 2017-02-24
|
91
|
+
|
92
|
+
## Added
|
93
|
+
|
94
|
+
* `Schema::Attribute#key` which returns tuple key name, either alias or canonical name (solnic)
|
95
|
+
|
96
|
+
## Fixed
|
97
|
+
|
98
|
+
* Fix output_schema to use Attribute#key rather than canonical names (solnic)
|
99
|
+
* Fix the error message for missing association (flash-gordon)
|
100
|
+
* Curried relation called without any arguments will raise an ArgumentError (solnic)
|
101
|
+
|
102
|
+
[Compare v3.0.1...v3.0.2](https://github.com/rom-rb/rom/compare/v3.0.1...v3.0.2)
|
103
|
+
|
104
|
+
# v3.0.1 2017-02-01
|
105
|
+
|
106
|
+
## Fixed
|
107
|
+
|
108
|
+
* ViewDSL exposes schemas that have access to all relations (solnic)
|
109
|
+
|
110
|
+
[Compare v3.0.0...v3.0.1](https://github.com/rom-rb/rom/compare/v3.0.0...v3.0.1)
|
111
|
+
|
112
|
+
# v3.0.0 2017-01-29
|
113
|
+
|
114
|
+
## Added
|
115
|
+
|
116
|
+
* Support for schemas in view definitions via `schema do ... end` block (evaluated in the context of the canonical schema) (solnic)
|
117
|
+
* Schemas have their own types with adapter-specific APIs (solnic)
|
118
|
+
* Schema attributes include meta properties `source` and `target` (for FKs) (solnic)
|
119
|
+
* Inferred schemas can have explicit attribute definitions for cases where inference didn't work (solnic)
|
120
|
+
* New schema APIs: `#project`, `#rename`, `#exclude`, `#prefix`, `#wrap`, `#merge`, `#append` and `#uniq` (solnic)
|
121
|
+
* New schema attribute APIs: `#name`, `#aliased`, `#aliased?`, `#prefixed`, `#prefixed?`, `#wrapped`, `#wrapped?`, `#source`, `#target`, `#primary_key?`, `#foreign_key?` (solnic)
|
122
|
+
* Schemas are coercible to arrays that include all attribute types (solnic)
|
123
|
+
* Automatic relation view projection via `Schema#call` (abstract method for adapters) (solnic)
|
124
|
+
* `Relation#new(dataset, new_opts)` interface (solnic)
|
125
|
+
* `Relation#[]` interface for convenient access to schema attributes (solnic)
|
126
|
+
* `Command` has now support for `before` and `after` hooks (solnic)
|
127
|
+
* Support for `read` types in schemas, these are used when relation loads its tuples (solnic)
|
128
|
+
* New `Command#before` method for creating a command with before hook(s) at run-time (solnic)
|
129
|
+
* New `Command#after` method for creating a command with after hook(s) at run-time (solnic)
|
130
|
+
* New `Gateway#transaction` method runs code inside a transaction (flash-gordon)
|
131
|
+
|
132
|
+
## Changed
|
133
|
+
|
134
|
+
* [BREAKING] All relations have schemas now, empty by default (solnic)
|
135
|
+
* [BREAKING] `view` DSL is now part of the core relation API (solnic)
|
136
|
+
* [BREAKING] `view` DSL is based on schemas now, `header` was replaced with `schema` (solnic)
|
137
|
+
* [BREAKING] Deprecated `Command.validator` was removed (solnic)
|
138
|
+
* [internal] Renamed `relation` => `target` meta property in FK types (solnic)
|
139
|
+
* [internal] Use deprecations API from dry-core (flash-gordon)
|
140
|
+
* [internal] Use common constants from dry-core (EMPTY_HASH, EMPTY_ARRAY etc.) (flash-gordon)
|
141
|
+
* [internal] Internal ROM modules (array_dataset, enumerable_dataset, auto_curry, and data_proxy) were moved from rom-support to ROM itself (flash-gordon)
|
142
|
+
* [internal] rom-support dependency was removed (flash-gordon)
|
143
|
+
|
144
|
+
[Compare v2.0.2...v3.0.0](https://github.com/rom-rb/rom/compare/v2.0.2...v3.0.0)
|
145
|
+
|
146
|
+
# v2.0.2 2016-11-11
|
147
|
+
|
148
|
+
## Added
|
149
|
+
|
150
|
+
* API docs for `ROM::Container` (solnic)
|
151
|
+
|
152
|
+
## Fixed
|
153
|
+
|
154
|
+
* Custom command input function is no longer overridden by schema hash (solnic)
|
155
|
+
* `Relation::Name#to_s` returns a string properly when there is no alias (solnic)
|
156
|
+
|
157
|
+
[Compare v2.0.1...v2.0.2](https://github.com/rom-rb/rom/compare/v2.0.1...v2.0.2)
|
158
|
+
|
159
|
+
# v2.0.1 2016-09-30
|
160
|
+
|
161
|
+
### Added
|
162
|
+
|
163
|
+
- Support for different auto-registration strategies (janjiss)
|
164
|
+
- Support for custom component dir names in auto-registration (AMHOL)
|
165
|
+
|
166
|
+
### Fixed
|
167
|
+
|
168
|
+
- Finalizing schema that is already finalized no longer crashes (flash-gordon)
|
169
|
+
|
170
|
+
[Compare v2.0.0...v2.0.1](https://github.com/rom-rb/rom/compare/v2.0.0...v2.0.1)
|
171
|
+
|
172
|
+
# v2.0.0 2016-07-27
|
173
|
+
|
174
|
+
### Added
|
175
|
+
|
176
|
+
- Extendible `schema` DSL for relations with attribute and type definitions (solnic)
|
177
|
+
- New command plugin `:schema` which will set up an input handler from schema definition (solnic)
|
178
|
+
- New command option `restrictible` for commands that can use a restricted relation (solnic)
|
179
|
+
- More meaningful exception is raised when trying to access a non-existant command (thiagoa)
|
180
|
+
- `Relation::Name` class that contains both relation and dataset names (flash-gordon)
|
181
|
+
- `Relation::Loaded#pluck` returning values under specified key (solnic)
|
182
|
+
- `Relation::Loaded#primary_keys` returning a list of primary keys from a materialized relation (solnic)
|
183
|
+
|
184
|
+
#### New low-level APIs
|
185
|
+
|
186
|
+
- `Command.create_class` for building a command class dynamically (solnic)
|
187
|
+
- `Command.extend_for_relation` for extending a command with relation view interface (solnic)
|
188
|
+
|
189
|
+
### Fixed
|
190
|
+
|
191
|
+
- [BREAKING] command graphs return materialized results (a hash or an array) (solnic)
|
192
|
+
- `Container#disconnect` properly delegates to gateways (endash)
|
193
|
+
- `Relation#with` properly carries original options (solnic)
|
194
|
+
- Command pipeline will stop processing if result was `nil` or an empty array (solnic)
|
195
|
+
|
196
|
+
### Changed
|
197
|
+
|
198
|
+
- [BREAKING] `ROM.env` **is gone** (solnic)
|
199
|
+
- [BREAKING] `Update` and `Delete` no longer calls `assert_tuple_count` [more info](https://github.com/rom-rb/rom/commit/bec2c4c1dce370670c90f529feb1b4db0e6e4bd9) (solnic)
|
200
|
+
- [BREAKING] `Relation#name` and `Command#name` now returns `Relation::Name` instance (flash-gordon)
|
201
|
+
- `Command.validator` is now deprecated [more info](https://github.com/rom-rb/rom/commit/80bb8411bd411f05d9c51106ae026ad412a2f25f) (solnic)
|
202
|
+
- `Relation.dataset` yields a relation class when block was passed (solnic)
|
203
|
+
- `Relation#attributes` can return attributes explicitly passed via options (solnic)
|
204
|
+
- Relation `:key_inference` plugin supports schema information from other relations (solnic)
|
205
|
+
- `auto_registration` coerces its directory to a pathname now (adz)
|
206
|
+
- `macros` are now enabled by default in in-line setup block (endash)
|
207
|
+
|
208
|
+
[Compare v1.0.0...v2.0.0](https://github.com/rom-rb/rom/compare/v1.0.0...v2.0.0)
|
209
|
+
|
210
|
+
# v1.0.0 2016-01-06
|
211
|
+
|
212
|
+
### Added
|
213
|
+
|
214
|
+
- Command graph DSL (endash + solnic)
|
215
|
+
- Command graph now supports update and delete commands (cflipse + solnic)
|
216
|
+
- `Gateway.adapter` setting and a corresponding `Gateway#adapter` reader. Both are
|
217
|
+
necessary to access a migrator (nepalez)
|
218
|
+
- `ROM::Commands::Result#{success?,failure?}` interface (Snuff)
|
219
|
+
- Imported relation plugins from `rom-repository`:
|
220
|
+
- `view` for explicit relation view definitions
|
221
|
+
- `key_inference` for inferring `foreign_key` of a relation
|
222
|
+
|
223
|
+
### Changed
|
224
|
+
|
225
|
+
- **REMOVED** all deprecated APIs (solnic)
|
226
|
+
- [fixed #306] Inheriting from a misconfigured adapter relation will raise a
|
227
|
+
meaningful error (solnic)
|
228
|
+
- Command graph will raise `ROM::KeyMissing` command error when a key is missing
|
229
|
+
in the input (solnic)
|
230
|
+
- Command graph no longer rescues from any exception (solnic)
|
231
|
+
|
232
|
+
### Fixed
|
233
|
+
|
234
|
+
- `Relation.register_as` properly overrides inherited value (solnic)
|
235
|
+
|
236
|
+
[Compare v0.9.1...v1.0.0](https://github.com/rom-rb/rom/compare/v0.9.1...v1.0.0)
|
237
|
+
|
238
|
+
# v0.9.1 2015-08-21
|
239
|
+
|
240
|
+
This is a small bug-fix release which addresses a couple of issues for inline
|
241
|
+
setup DSL and multi-environments.
|
242
|
+
|
243
|
+
### Fixed
|
244
|
+
|
245
|
+
- Multi-env setup for adapters with schema-inferration support won't crash (solnic)
|
246
|
+
- Default adapter is set correctly when many adapters are configured and one is
|
247
|
+
registered under `:default` name (solnic)
|
248
|
+
- When defining a relation using inline DSL with custom dataset name the relation
|
249
|
+
name will be correctly set as `register_as` setting (solnic)
|
250
|
+
|
251
|
+
### Changed
|
252
|
+
|
253
|
+
- When using inline-setup for env the auto_registration mechanism will be turned
|
254
|
+
on by default (solnic)
|
255
|
+
|
256
|
+
[Compare v0.9.0...v0.9.1](https://github.com/rom-rb/rom/compare/v0.9.0...v0.9.1)
|
257
|
+
|
258
|
+
# v0.9.0 2015-08-19
|
259
|
+
|
260
|
+
### Added
|
261
|
+
|
262
|
+
* Configuration API for gateways supporting following options:
|
263
|
+
- `infer_relations` either `true` or `false` - if disabled schema inference
|
264
|
+
won't be used to automatically set up relations for you
|
265
|
+
- `inferrable_relations` a list of allowed relations that should be inferred
|
266
|
+
- `not_inferrable_relations` a list of relations that should not be inferred
|
267
|
+
|
268
|
+
### Changed
|
269
|
+
|
270
|
+
* Global setup with auto-registration ported to the `:auto_registration` environment plugin (AMHOL)
|
271
|
+
* Multi-environment setup possible now via `ROM::Environment` object (AMHOL)
|
272
|
+
* All relations are now lazy with auto-currying enabled (solnic)
|
273
|
+
* Low-level query DSL provided by adapters is now public but using it directly in
|
274
|
+
application layer is discouraged (solnic)
|
275
|
+
* `ROM::Mapper` component extracted into standalone `rom-mapper` gem (solnic)
|
276
|
+
* Support libraries extracted to `rom-support` gem (solnic)
|
277
|
+
|
278
|
+
## Fixed
|
279
|
+
|
280
|
+
* `register_as` is now properly inferred for relations and their descendants (solnic)
|
281
|
+
* Adapter-specific interface is properly included in relation descendants (solnic)
|
282
|
+
* Combined commands (aka command graph) properly rejects keys from nested input
|
283
|
+
prior sending the input to individual commands (solnic)
|
284
|
+
* Composite relation materializes correctly when another composite on the right
|
285
|
+
side became materialized (ie piping relation through a composite relation will
|
286
|
+
work correctly) (solnic)
|
287
|
+
|
288
|
+
[Compare v0.8.1...v0.9.0](https://github.com/rom-rb/rom/compare/v0.8.1...v0.9.0)
|
289
|
+
|
290
|
+
# v0.8.1 2015-07-12
|
291
|
+
|
292
|
+
### Fixed
|
293
|
+
|
294
|
+
* `ROM::CommandError` properly sets original error and backtrace (solnic)
|
295
|
+
|
296
|
+
### Changed
|
297
|
+
|
298
|
+
* Internal transproc processor has been updated to the new API (solnic)
|
299
|
+
|
300
|
+
[Compare v0.8.0...v0.8.1](https://github.com/rom-rb/rom/compare/v0.8.0...v0.8.1)
|
301
|
+
|
302
|
+
# v0.8.0 2015-06-22
|
303
|
+
|
304
|
+
### Added
|
305
|
+
|
306
|
+
* Commands can be combined into a single command that can work with a nested input (solnic)
|
307
|
+
* New `step` mapper operation that allows multistep transformations inside a single mapper (dekz)
|
308
|
+
* New `ungroup` and `unfold` mapper operations inverse `group` and `fold` (nepalez)
|
309
|
+
* Support deep nesting of `unwrap` mapper operations (nepalez)
|
310
|
+
* Support usage of `exclude` in a root of the mapper (nepalez)
|
311
|
+
* Support usage of `prefix` and `prefix_separator` mapper operations inside blocks (nepalez)
|
312
|
+
* Support renaming of the rest of an attribute after `unwrap` (nepalez)
|
313
|
+
|
314
|
+
### Changed
|
315
|
+
|
316
|
+
* `Repository` class has been renamed to `Gateway` with proper deprecation
|
317
|
+
warnings (cflipse)
|
318
|
+
* `combine` in mapper can be used without a block (kwando)
|
319
|
+
* `wrap` and `group` in mapper will raise error if `:mapper` is set along with
|
320
|
+
block or options (vrish88)
|
321
|
+
|
322
|
+
### Fixed
|
323
|
+
|
324
|
+
* `order` memory repository operation sorts tuples containing empty values (nepalez)
|
325
|
+
* `Mapper::AttributeDSL#embedded` now honors `option[:type]` when used
|
326
|
+
with `option[:mapper]` (c0)
|
327
|
+
|
328
|
+
[Compare v0.7.1...v0.8.0](https://github.com/rom-rb/rom/compare/v0.7.1...v0.8.0)
|
329
|
+
|
330
|
+
# v0.7.1 2015-05-22
|
331
|
+
|
332
|
+
### Added
|
333
|
+
|
334
|
+
* Support for passing a block for custom coercion to `attribute` (gotar)
|
335
|
+
* `fold` mapping operation which groups keys from input tuples to array
|
336
|
+
of values from the first of listed keys (nepalez)
|
337
|
+
* Adapter `Relation` and command classes can specify `adapter` identifier
|
338
|
+
which allows using adapter-specific plugins w/o the need to specify adapter
|
339
|
+
when calling `use` (solnic)
|
340
|
+
|
341
|
+
### Changed
|
342
|
+
|
343
|
+
* [rom/memory] `restrict` operation supports array as a value (gotar)
|
344
|
+
* [rom/memory] `restrict` operation supports regexp as a value (gotar)
|
345
|
+
|
346
|
+
[Compare v0.7.0...v0.7.1](https://github.com/rom-rb/rom/compare/v0.7.0...v0.7.1)
|
347
|
+
|
348
|
+
# v0.7.0 2015-05-17
|
349
|
+
|
350
|
+
### Added
|
351
|
+
|
352
|
+
* `combine` interface in Relation and Mapper which allows simple and explicit
|
353
|
+
eager-loading that works with all adapters (solnic)
|
354
|
+
* `reject_keys` option in mapper which will filter out unspecified keys from
|
355
|
+
input tuples (solnic)
|
356
|
+
* `unwrap` mapping operation (aflatter)
|
357
|
+
* Arbitrary objects can be registered as mappers via `register` in mapping DSL (solnic)
|
358
|
+
* Ability to reuse existing mappers in `group`, `wrap` and `embedded` mappings (solnic)
|
359
|
+
* Plugin interface for Relation, Mapper and Command (cflipse)
|
360
|
+
* `Memory::Dataset` accepts options hash now which makes it more flexible for
|
361
|
+
any adapter that wants to subclass it (solnic)
|
362
|
+
* `ROM::Memory::Relation#take` (solnic)
|
363
|
+
|
364
|
+
### Changed
|
365
|
+
|
366
|
+
* [BREAKING] `Command#call` applies curried args first (solnic)
|
367
|
+
* `Commands::Update#set` was deprecated in favor of `call` (solnic)
|
368
|
+
* `group` mapping reject empty tuples (solnic)
|
369
|
+
|
370
|
+
### Fixed
|
371
|
+
|
372
|
+
* `Command` respond to missing properly now (solnic)
|
373
|
+
* `Mapper::DSL` respond to missing properly now (solnic)
|
374
|
+
|
375
|
+
### Internal
|
376
|
+
|
377
|
+
* Fixed all the warnings \o/ (splattael)
|
378
|
+
* Introduced `Deprecations` helper module (solnic)
|
379
|
+
|
380
|
+
[Compare v0.6.2...v0.7.0](https://github.com/rom-rb/rom/compare/v0.6.2...v0.7.0)
|
381
|
+
|
382
|
+
# v0.6.2 2015-04-14
|
383
|
+
|
384
|
+
### Changed
|
385
|
+
|
386
|
+
* Updated to transproc 0.2.0 (solnic)
|
387
|
+
|
388
|
+
### Fixed
|
389
|
+
|
390
|
+
* `CommandRegistry#respond_to_missing?` behavior (hecrj)
|
391
|
+
|
392
|
+
[Compare v0.6.1...v0.6.2](https://github.com/rom-rb/rom/compare/v0.6.1...v0.6.2)
|
393
|
+
|
394
|
+
# v0.6.1 2015-04-04
|
395
|
+
|
396
|
+
### Added
|
397
|
+
|
398
|
+
* Ability to auto-map command result via `rom.command(:rel_name).as(:mapper_name)` (solnic)
|
399
|
+
|
400
|
+
### Changed
|
401
|
+
|
402
|
+
* gemspec no longer specifies required_ruby_version so that rom can be installed on jruby (solnic)
|
403
|
+
* Obsolete `Env#readers` was removed (splattael)
|
404
|
+
|
405
|
+
[Compare v0.6.0...v0.6.1](https://github.com/rom-rb/rom/compare/v0.6.0...v0.6.1)
|
406
|
+
|
407
|
+
# v0.6.0 2015-03-22
|
408
|
+
|
409
|
+
### Added
|
410
|
+
|
411
|
+
* It is now possible to define custom relation, mapper and command classes during setup (solnic)
|
412
|
+
* New `Env#relation` interface for reading and mapping relations which supports:
|
413
|
+
* `Relation::Lazy` with auto-currying, mapping and composition features (solnic)
|
414
|
+
* `Relation::Composite` allowing data-pipelining with arbitrary objects (solnic)
|
415
|
+
* Passing a block which yields relation with adapter query DSL available (solnic)
|
416
|
+
* Relations can be extended with plugins using Options API (solnic)
|
417
|
+
* Commands are now composable via `>>` operator (solnic)
|
418
|
+
* Mappers support `prefix_separator` option (solnic)
|
419
|
+
* Mappers can be registered under custom names (solnic)
|
420
|
+
* Relation `dataset` name is inferred from the class name by default (gotar)
|
421
|
+
* Relation can be registered under a custom name via `register_as` option (mcls)
|
422
|
+
* Adapters can use helper modules for datasets: `ArrayDataset` and `EnumerableDataset` (solnic)
|
423
|
+
* Adapter interface can now be tested via a lint test (elskwid + solnic + splattael)
|
424
|
+
* `tuple_count` interface in AbstractCommand which can be overridden by adapter (solnic)
|
425
|
+
* Custom Inflector API that auto-detects a specific inflection engine (mjtko)
|
426
|
+
|
427
|
+
### Changed
|
428
|
+
|
429
|
+
* [BREAKING] Schema DSL was **removed** - attributes can be specified only in mapper DSL
|
430
|
+
* [BREAKING] Reader was **removed** in favor of relation interface with explicit mapping (solnic)
|
431
|
+
* [BREAKING] Command API was simplified - commands should be accessed directly in `.try` block
|
432
|
+
and default repository can be changed when defining a relation (solnic)
|
433
|
+
* `.setup` interface requires either an adapter identifier or can accept a repository
|
434
|
+
instance (aflatter)
|
435
|
+
* Adapter interface no longer requires specific constructor to be defined (aflatter)
|
436
|
+
* Adapters no longer need to handle connection URIs (aflatter)
|
437
|
+
* Adapter/Repository has been collapsed to *just* `Repository` (solnic)
|
438
|
+
* Relation no longer needs a header object and only operates on an adapters dataset (solnic)
|
439
|
+
* Relation no longer uses on Charlatan with method_missing magic (solnic)
|
440
|
+
* Adapter's dataset no longer requires header (solnic)
|
441
|
+
* Make storage in memory adapter thread-safe #110 (splattael)
|
442
|
+
* An Adapter can provide its own Relation subclass with custom behavior (solnic)
|
443
|
+
* Relation provides its "public interface" using method_added hook (splattael + solnic)
|
444
|
+
* ROM no longer depends on charlatan, concord and inflecto gems (mjtko + solnic)
|
445
|
+
|
446
|
+
[Compare v0.5.0...v0.6.0](https://github.com/rom-rb/rom/compare/v0.5.0...v0.6.0)
|
447
|
+
|
448
|
+
# v0.5.0 2014-12-31
|
449
|
+
|
450
|
+
### Added
|
451
|
+
|
452
|
+
* Mapper DSL supports `embedded` interface for nested tuples (solnic)
|
453
|
+
* Support for nested `group` mapping (solnic)
|
454
|
+
* Support for nested `wrap` mapping (solnic)
|
455
|
+
* Support for primitive type coercions (:to_string, :to_integer etc.) (solnic)
|
456
|
+
* Support for top-level `:prefix` option in mapping DSL (solnic)
|
457
|
+
* Support for top-level `:symbolize_keys` option in mapping DSL (solnic)
|
458
|
+
* Support for `:prefix` option in wrap/group mapping DSL (solnic)
|
459
|
+
* Interface for registering data mapping processors (solnic)
|
460
|
+
* Remaining relations are automatically setup from the schema (solnic)
|
461
|
+
* Each relation has now access to other relations (previously they only had
|
462
|
+
access to raw datasets) (solnic)
|
463
|
+
* `ROM.setup` supports passing in *just an uri* which will setup a default repository (solnic)
|
464
|
+
* `ROM.setup` supports passing in conventional database connection hash (solnic)
|
465
|
+
* Adapters support extra options in addition to the base connection URI (solnic)
|
466
|
+
|
467
|
+
### Changed
|
468
|
+
|
469
|
+
* Mapping backend replaced by integration with transproc (solnic)
|
470
|
+
* Readers no longer expose adapter query DSL (solnic)
|
471
|
+
* Registry objects raise `ROM::Registry::ElementNotFoundError` when missing
|
472
|
+
element is referenced (rather than raw KeyError) (solnic)
|
473
|
+
* Performance improvements in Reader (solnic)
|
474
|
+
* `ROM::RA` was merged into in-memory adapter as this fits there perfectly (solnic)
|
475
|
+
* It is no longer needed to explicitly execute a delete command in try block (solnic)
|
476
|
+
|
477
|
+
### Fixed
|
478
|
+
|
479
|
+
* Wrap/group skips empty tuples now (solnic)
|
480
|
+
* Readers raise a meaningful error when relation is missing (solnic)
|
481
|
+
|
482
|
+
## Internal
|
483
|
+
|
484
|
+
* Massive code clean-up and rubocop integration (chastell)
|
485
|
+
* Refactored `Reader` and mapper-specific logic into `MapperRegistry` (solnic)
|
486
|
+
|
487
|
+
[Compare v0.4.2...v0.5.0](https://github.com/rom-rb/rom/compare/v0.4.2...v0.5.0)
|
488
|
+
|
489
|
+
# v0.4.2 2014-12-19
|
490
|
+
|
491
|
+
### Added
|
492
|
+
|
493
|
+
* Mappers support tuple transformation using wrap and group operations (solnic)
|
494
|
+
* PORO model builder supports namespaced constants via `name: 'MyApp:Entities::User` (solnic)
|
495
|
+
|
496
|
+
### Changed
|
497
|
+
|
498
|
+
* `ROM::RA` interface is no longer mixed into relations by default (solnic)
|
499
|
+
* ~2.5 x speed up in aggregate mapping (solnic)
|
500
|
+
* PORO model builder only defines attribute readers now (no writers!) (solnic)
|
501
|
+
* Registry objects in Env will now raise `KeyError` when unknown name is referenced (solnic)
|
502
|
+
|
503
|
+
[Compare v0.4.1...v0.4.2](https://github.com/rom-rb/rom/compare/v0.4.1...v0.4.2)
|
504
|
+
|
505
|
+
# v0.4.1 2014-12-15
|
506
|
+
|
507
|
+
### Added
|
508
|
+
|
509
|
+
* Adapter can now implement `Adapter#dataset(name, header)` to return a dataset (solnic)
|
510
|
+
* For multi-step setup the DSL is available in `ROM` too (solnic)
|
511
|
+
* Global environment can be stored via `ROM.finalize` and accessible via `ROM.env` (solnic)
|
512
|
+
* Mapper won't infer attributes from the header if `:inherit_header` option is set to false (solnic)
|
513
|
+
|
514
|
+
### Changed
|
515
|
+
|
516
|
+
* Schema can be defined in multiple steps (solnic)
|
517
|
+
* Setting model in mapper DSL is no longer required and defaults to `Hash` (solnic)
|
518
|
+
* Adapter datasets no longer have to return headers when they are provided by schema (solnic)
|
519
|
+
|
520
|
+
[Compare v0.4.0...v0.4.1](https://github.com/rom-rb/rom/compare/v0.4.0...v0.4.1)
|
521
|
+
|
522
|
+
# v0.4.0 2014-12-06
|
523
|
+
|
524
|
+
### Added
|
525
|
+
|
526
|
+
* Command API (solnic)
|
527
|
+
* Setup DSL is now available within the `ROM.setup` block (solnic)
|
528
|
+
* Support for setting up a logger for an adapter (solnic)
|
529
|
+
* New `Adapter#dataset?(name)` which every adapter must implement (solnic)
|
530
|
+
|
531
|
+
### Fixed
|
532
|
+
|
533
|
+
* method-missing in `Repository` and `Env` kindly calls `super` (solnic)
|
534
|
+
|
535
|
+
### Changed
|
536
|
+
|
537
|
+
* Abstract `Adapter` defines `:connection` reader so it doesn't have to be
|
538
|
+
defined in adapter descendants (solnic)
|
539
|
+
|
540
|
+
[Compare v0.3.1...v0.4.0](https://github.com/rom-rb/rom/compare/v0.3.1...v0.4.0)
|
541
|
+
|
542
|
+
# v0.3.1 2014-11-25
|
543
|
+
|
544
|
+
### Added
|
545
|
+
|
546
|
+
* attributes for `group` mapping operation can be specified without options (solnic)
|
547
|
+
* attributes for `wrap` mapping operation can be specified without options (solnic)
|
548
|
+
* `Env` uses Equalizer (solnic)
|
549
|
+
* boot dsl methods return self (solnic)
|
550
|
+
|
551
|
+
### Fixed
|
552
|
+
|
553
|
+
* when schema is missing booting will gracefuly skip building relations and mappers (solnic)
|
554
|
+
* in-memory join handles one-to-many and many-to-one correctly (solnic)
|
555
|
+
|
556
|
+
[Compare v0.3.0...v0.3.1](https://github.com/rom-rb/rom/compare/v0.3.0...v0.3.1)
|
557
|
+
|
558
|
+
# v0.3.0 2014-11-24
|
559
|
+
|
560
|
+
This version is a rewrite that introduces a new, simplified architecture based
|
561
|
+
on a new adapter interface.
|
562
|
+
|
563
|
+
[Compare v0.2.0...v0.3.0](https://github.com/rom-rb/rom/compare/v0.2.0...v0.3.0)
|
564
|
+
|
565
|
+
# v0.2.0 2014-04-06
|
566
|
+
|
567
|
+
### Added
|
568
|
+
|
569
|
+
* [feature] added :rename option to schema attribute DSL (solnic)
|
570
|
+
* [feature] added support for join, group, wrap, project and rename operations (solnic)
|
571
|
+
* [feature] added support for setting domain object loading strategy (solnic)
|
572
|
+
* [feature] Environment.setup can be used with a block to define schema and mapping (solnic)
|
573
|
+
* [feature] added public interface for building mappers (see Mapper.build) (solnic)
|
574
|
+
* [feature] added support for mapping embedded objects using wrap/group (solnic)
|
575
|
+
* [feature] environment exposes mapper registry via Environment#mappers (solnic)
|
576
|
+
|
577
|
+
### Changed
|
578
|
+
|
579
|
+
* [BREAKING] rom-relation, rom-mapper and rom-session were merged into rom project (solnic)
|
580
|
+
* [BREAKING] changed mapping DSL (users do...end => relation(:users) do...end) (solnic)
|
581
|
+
* [BREAKING] added :from option to mapping DSL which replaced :to (solnic)
|
582
|
+
* [internal] mappers are now backed by [morpher](https://github.com/mbj/morpher) (solnic)
|
583
|
+
* [internal] renaming and optimizing relations happens on the schema level now (solnic)
|
584
|
+
* [internal] environment will raise if unknown relation is referenced via `Environment#[]` (solnic)
|
585
|
+
|
586
|
+
[Compare v0.1.2...v0.2.0](https://github.com/rom-rb/rom/compare/v0.1.2...v0.2.0)
|
587
|
+
|
588
|
+
# v0.1.2 2013-09-02
|
589
|
+
|
590
|
+
* [updated] [rom-relation](https://github.com/rom-rb/rom-relation/blob/v0.1.2/Changelog.md#v012-2013-09-02)
|
591
|
+
|
592
|
+
[Compare v0.1.1...v0.1.2](https://github.com/rom-rb/rom/compare/v0.1.1...v0.1.2)
|
593
|
+
|
594
|
+
# v0.1.1 2013-08-30
|
595
|
+
|
596
|
+
* [updated] [rom-relation](https://github.com/rom-rb/rom-relation/blob/v0.1.1/Changelog.md#v011-2013-08-30)
|
597
|
+
* [updated] [rom-session](https://github.com/rom-rb/rom-session/blob/v0.1.1/Changelog.md#v011-2013-08-30)
|
598
|
+
|
599
|
+
[Compare v0.1.0...v0.1.1](https://github.com/rom-rb/rom/compare/v0.1.0...v0.1.1)
|
600
|
+
|
601
|
+
# v0.1.0 2013-08-23
|
602
|
+
|
603
|
+
First public release
|