forked from rom-rb/rom
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchangelog.yml
251 lines (251 loc) · 12.8 KB
/
changelog.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
---
- version: 6.0.0.alpha1
summary: |
This is a major release but it's backward compatible. Please see [the upgrade guide](https://github.com/rom-rb/rom/wiki/6.0-Upgrade-Guide) as there are
a couple of extra steps required for the upgrade.
date: '2022-04-15'
fixed:
- 'Setup works under MRI 3.0.0 (issue #622 fixed via #623) (@v-kolesnikov)'
added:
- 'New settings API for components using dry-configurable (via #651) (@solnic)'
- 'ROM(...) shortcut method for setting up rom, ie `ROM(:sql, "sqlite::memory")` (@solnic)'
- 'You can now configure a custom inflector via configuration (PR #591) (@flash-gordon)'
- 'New component API that replaces internal implementation of the finalization code
and makes it possible to extend ROM with arbitrary component types (see #637)
(@solnic)'
- 'Generic Component API which allows you to turn any class or object into a DSL
that can define rom components (via #650) (@solnic)'
- 'Support for defining abstract components via `config.component.abstract` in which
case they won''t be initialized for runtime usage (via #651) (@solnic)'
- 'Ability to provide top-level component configuration ie default gateway, adapter,
inflector etc. (via #653) (@solnic)'
- 'Ability to configure gateways using configuration DSL (via #653) (@solnic)'
- 'Ability to define schemas without relations (via #653) (@solnic)'
- 'Relation view schemas that are defined via `Relation.view` DSL are now registered
too, which makes them more accessible/reusable (via #653) (@solnic)'
- 'Global configuration that can provide default settings for all your components.
ie a default adapter, gateway etc. (via #654) (@solnic)'
- 'Support for custom namespaces under which commands and mappers can be registered
(via #654) (@solnic)'
- 'Top-level `associations` DSL (via #656) (@solnic)'
- 'Support for configuring plugins on a per-component *instance* basis, which means
that implementing plugins is now simpler and more powerful (via #656) (@solnic)'
- 'New relation setting: `component.infer_id_from_class` (via #661) (@solnic)'
- "[experimental] New `ROM.components` API for registering custom component types
(via #654) (@solnic)"
- ".transaction methods now accept keyword arguments. `Repository#transaction` accepts
gateway to use. `Repository::Root#transaction` uses a gateway of the root relation
by default (#620 closed by #621) (@flash-gordon)"
- 'Backward-compatibility extension that you can load via `require "rom/compat"`
(via #634 refs #607) (@solnic)'
changed:
- "[BREAKING] `rom-core`, `rom-changeset` and `rom-repository` have been merged into `rom`
gem (@solnic)"
- "[BREAKING] `Setup#auto_registration` was renamed to `Setup#auto_register`. You
can restore the original method via rom/compat extension (via #634 refs #607)
(@solnic)"
- "[BREAKING] `Configuration#method_missing` no longer resolves gateways by default.
This functionality was moved to rom/compat (@solnic)"
- "[BREAKING] `ROM::Configuration` is deprecated and it was replaced by `ROM::Setup`. It can be restored via rom/compat (via #653) (@solnic)"
- "`ROM.container` is deprecated and it was replaced by `ROM.runtime` (via #653)
(@solnic)"
- "`Schema#[]` and `Relation#[]` now raise an error if a given attribute is not
unique (issue #529 fixed via #543) (@waiting-for-dev)"
- 'Configuration values are no longer being frozen during setup process (issue #616
fixed via #617) (@v-kolesnikov)'
- 'Custom commands are now lazily-resolved at runtime, which simplifies and speeds
up setup and finalization (via #641) (@solnic)'
- 'Mappers are now lazy-resolved at runtime which speeds up setup and finalization
(via #642) (@solnic)'
- 'Schemas are now 1st class components accessible via runtime container and decoupled
from relations (via #644) (@solnic)'
- "`Relation.dataset` receives canonical schema object now, rather than relation
class (via #644) (@solnic)"
- 'Relation classes no holder hold their schemas as class variables (via #644) (@solnic)'
- 'Gateways are now lazy-loadable (via #645) (@solnic)'
- 'Associations are now decoupled from schemas and lazy-loaded (via #646) (@solnic)'
- 'Plugin API is now internally simplified which resulted in faster runtime. It''s
also no longer required to register plugin types upfront (via #648) (@solnic)'
- 'Configuring auto_register stores its config under `config.auto_register` (via
#650) (@solnic)'
- "[internal] auto registration is now powered by Zeitwerk (via #634 refs #607)
(@solnic)"
- 'Plugin event listeners are no longer global which makes it possible to have plugin
with different configs in a single process (via #639) (@solnic)'
- "[internal] Command compiler is no longer coupled to gateway and notifications
(via #640) (@solnic)"
- 'Plugin configurations **are no longer global** which means that you can configure
the same plugin with different default settings for different component groups
or different runtimes in the same Ruby process (via #654) (@solnic)'
- "`Schema::DSL` is now deprecated. Adapters that need customized schema DSL behavior
can provide plugins instead (via #656) (@solnic)"
- "`ROM.plugins` returns global plugin registry when called without a block (via #660) (@solnic)"
- "[internal] `ROM::Container` is deprecated and it was replaced by `ROM::Registries::Root`. It can be restored via rom/compat (via #653) (@solnic)"
- "[internal] Commands that are compiled at runtime are now cached in the runtime
registry (via #653) (@solnic)"
- "[internal] `ROM.plugin_registry` is deprecated, use `ROM.plugins` instead (via
#660) (@solnic)"
- "[REVISIT] configuring custom gateway for a relation via DSL requires passing
it as an option rather than specifying it within the block. It kinda-worked previously
because the adapter was defaulting to the first one found. I'm quite sure this
was more like a bug than a feature. This behavior could be restored in rom/compat
though - it's a matter of defaulting to the first adapter found when gateway was
not explicitly specified, meaning the new default should be set to `Undefined`
rather than `:default` so that we can detect when it was not specified and act
accordingly. This will only make sense when there's just *one adapter available*
(via bedb330f0ec195d9acacf4481dad3a705e8a36af) (@solnic)"
- version: 5.2.4
summary:
date: '2020-05-08'
fixed:
- "[rom] Bumped rom-changeset version (@flash-gordon)"
- version: 5.2.3
summary:
date: '2020-05-07'
fixed:
- "[rom-core] Constructor types were fired twice when updating data (@flash-gordon)"
- "[rom-changeset] fixed a regression where a map function in `Update` changesets
was not evaluated in the context of a changeset object (fixed via #592) (@timriley
+ @solnic)"
- version: 5.2.2
summary:
date: '2020-02-03'
fixed:
- "[rom-core] Constructor types were fired twice when writing data (@flash-gordon)"
added:
- "[rom-repository] `Repository#transaction` accepts transaction options now (@ianks)"
changed:
- version: 5.2.1
date: '2020-01-11'
summary: This release contains keyword fixes reported by Ruby 2.7.
- version: 5.2.0
date: '2020-01-11'
summary: Yanked and republished as 5.2.1
- version: 5.1.2
date: '2019-08-17'
fixed:
- "[rom-core] Filtering out duplicated combine nodes works correctly with aliased
nodes (@solnic)"
- "[rom-core] Filtering out duplicated combine nodes should no longer cause performance
issues (@solnic)"
- "[rom-core] Relation names are properly equalized now (@solnic)"
- "[rom-core] Inferring class name for auto-structs works correctly with `:statuses`
and `:aliases` relation names (@solnic)"
changed:
- "[rom] Dependency on `rom-core` was bumped to `>= 5.1.2` (@solnic)"
- "[rom-changeset] Dependency on `rom-core` was bumped to `>= 5.1.2` (@solnic)"
- "[rom-repository] Dependency on `rom-core` was bumped to `>= 5.1.2` (@solnic)"
- version: 5.1.1
date: '2019-08-06'
changed:
- "[rom-core] Loading the gem no longer crashes in the absence of `rom` gem (issue
#560) (@solnic)"
- "[rom] Dependency on `rom-core` was bumped to `>= 5.1.1` (@solnic)"
- "[rom-changeset] Dependency on `rom-core` was bumped to `>= 5.1.1` (@solnic)"
- "[rom-repository] Dependency on `rom-core` was bumped to `>= 5.1.1` (@solnic)"
- version: 5.1.0
date: '2019-07-30'
fixed:
- "[rom-core] Combining same relation multiple times no longer crashes auto-mapping
(fixes #547) (@solnic)"
- "[rom-core] `ROM::Transformer` works correctly with inheritance (@solnic)"
- "[rom-core] `CommandCompiler` supports command options correctly now (@solnic)"
added:
- "[rom-core] `ROM::Transformer.map` shortcut for defining transformations (@solnic)"
- "[rom-core] `ROM::Transformer` supports instance methods as mapping functions
now (@solnic)"
- "[rom-core] `ROM::Transformer` configuration can be now inlined ie `relation :users,
as: :json_serializer` (@solnic)"
- "[rom-changeset] Plugin API :tada: (@solnic)"
- "[rom-changeset] Support for `command_options` in changesets for providing any
additional command options (@solnic)"
- "[rom-changeset] Support for `command_plugins` in changesets for enabling command
plugins and configuring them (@solnic)"
- "[rom-repository] Plugin API :tada: (@flash-gordon)"
changed:
- "[rom-core] Plugin API has been generalized to enable arbitrary component plugins
(@flash-gordon)"
- version: 5.0.2
date: '2019-05-01'
fixed:
- "[rom-core] Forwarding to `root` in `Relation::Combined` behaves as expected when
another combined relation was returned from the root (issue #525) (solnic)"
- "[rom-core] Specifying attribute options as the third argument in `attribute`
DSL works again (issue #540) (solnic)"
changed:
- "[rom] Dependency on `rom-core` was bumped to `~> 5.0`, `>= 5.0.2` (solnic)"
- "[rom] Dependency on `rom-changeset` was bumped to `~> 5.0`, `>= 5.0.1` (solnic)"
- "[rom-changeset] `Relation::Combined#changeset` will raise a meaningful `NotImplementedError`
now (solnic)"
- "[rom-changeset] Passing an array to `Changeset#associate` will raise a meaningful
`NotImplementedError` now (solnic)"
- version: 5.0.1
date: '2019-04-24'
fixed:
- "[rom-core] Missing dependency on `transproc` was added (solnic)"
changed:
- "[rom] Dependency on `rom-core` was bumped to `~> 5.0`, `>= 5.0.1` (solnic)"
- version: 5.0.0
date: '2019-04-24'
changed:
- "`rom-core` bumped to `5.0.0` (solnic)"
- "`rom-changeset` bumped to `5.0.0` (solnic)"
- "`rom-repository` bumped to `5.0.0` (solnic)"
- "`rom-mapper` was moved to `core` under `rom/mapper` so it's no longer a runtime
dependency (solnic)"
- "[rom-core] [BREAKING] `Types::Int` is now `Types::Integer` (flash-gordon)"
- "[rom-core] [BREAKING] Attribute aliases are no longer stored in attribute's type
meta (waiting-for-dev)"
- "[rom-core] Updated to work with `dry-types 1.0.0` (flash-gordon)"
- "[rom-core] Updated to work with `dry-struct 1.0.0` (flash-gordon)"
- "[rom-core] Updated to work with `dry-initializer 3.0.0` (solnic)"
- "[rom-repository] [BREAKING] Support for ruby <= `2.4` was dropped (flash-gordon)"
- "[rom-repository] [BREAKING] `Repository::Root#aggregate` was removed in favor
of `Relation#combine` (v-kolesnikov)"
- version: 4.2.1
date: '2018-05-03'
changed:
- "`rom-core` updated to `['~> 4.2', '>= 4.2.1']`"
- version: 4.2.0
date: '2018-03-29'
changed:
- "[rom] `rom-core` updated to `['~> 4.2', '>= 4.2.0']`"
- "[rom] `rom-changeset` updated to `['~> 1.0', '>= 1.0.2']`"
- version: 4.1.3
date: '2018-02-03'
changed:
- "[rom] `rom-core` updated to `['~> 4.1', '>= 4.1.3']`"
- version: 4.1.2
date: '2018-01-15'
changed:
- "[rom] `rom-core` updated to `['~> 4.1', '>= 4.1.1']`"
- version: 4.1.1
date: '2017-12-01'
changed:
- "[rom] `rom-repository` updated to `['~> 2.0', '>= 2.0.2']`"
- version: 4.1.0
date: '2017-11-17'
changed:
- "[rom] `rom-core` updated to `['~> 4.1']`"
- "[rom] `rom-mapper` updated to `'~> 1.1'`"
- version: 4.0.3
date: '2017-11-14'
changed:
- "[rom] `rom-core` updated to `['~> 4.0', '>= 4.0.3']`"
- version: 4.0.2
date: '2017-11-02'
changed:
- "[rom] `rom-core` updated to `['~> 4.0', '>= 4.0.2']`"
- "[rom] `rom-mapper` updated to `['~> 1.0', '>= 1.0.2']`"
- "[rom] `rom-changeset` updated to `['~> 1.0', '>= 1.0.1']`"
- "[rom] `rom-repository` updated to `['~> 2.0', '>= 2.0.1']`"
- version: 4.0.1
date: '2017-10-22'
changed:
- "[rom] `rom-core` updated to `['~> 4.0', '>= 4.0.1']`"
- "[rom] `rom-mapper` updated to `['~> 1.0', '>= 1.0.1']`"
- version: 4.0.0
date: '2017-10-18'
summary: This release turns `rom` gem into a meta gem which depends on `rom-core`,
`rom-mapper`, `rom-repository` and `rom-changeset'`. See [CHANGELOG](https://github.com/rom-rb/rom/blob/main/core/CHANGELOG.md#v400-2017-10-18)
in core for more information.