Releases: rom-rb/rom
Releases · rom-rb/rom
v5.4.3
v5.4.2
Fixed
- [rom-repository] Fix warning about redefined
set_relationmethod (@flash-gordon)
v5.4.1
Fixed
- [rom-repository]
set_relationis deprecated and will be removed in 6.0.0 (issue #698 fixed via #699) (@flash-gordon)
v5.4.0
Fixed
- [rom-repository] reduce memory allocation for relations reader in a repository and registry reader (issue #694 fixed via #695 and #695 and #697) (@flash-gordon)
Changed
- [rom-core] Ruby 3.1 is now the minimum supported version (@flash-gordon)
v5.3.2
5.3.2 2024-05-06
Fixed
- [rom-core] another fix caused by
Object#withfrom ActiveSupport 7.1 (@flash-gordon) - [rom-core] workaround for compatibility with
Object#withadded in ActiveSupport 7.1 (@rykov + @flash-gordon)
v5.3.0
Changed
- [rom] Upgraded to the latest versions of dry-* (@flash-gordon)
Fixed
- [rom-core] warning about using
lambdawithout a literal block (@flash-gordon)
6.0.0.alpha1
This is a major release but it's backward compatible. Please see the upgrade guide as there are
a couple of extra steps required for the upgrade.
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.abstractin 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.viewDSL 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
associationsDSL (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.componentsAPI for registering custom component types (via #654) (@solnic) - .transaction methods now accept keyword arguments.
Repository#transactionaccepts gateway to use.Repository::Root#transactionuses 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)
Fixed
- Setup works under MRI 3.0.0 (issue #622 fixed via #623) (@v-kolesnikov)
Changed
- [BREAKING]
rom-core,rom-changesetandrom-repositoryhave been merged intoromgem (@solnic) - [BREAKING]
Setup#auto_registrationwas renamed toSetup#auto_register. You can restore the original method via rom/compat extension (via #634 refs #607) (@solnic) - [BREAKING]
Configuration#method_missingno longer resolves gateways by default. This functionality was moved to rom/compat (@solnic) - [BREAKING]
ROM::Configurationis deprecated and it was replaced byROM::Setup. It can be restored via rom/compat (via #653) (@solnic) ROM.containeris deprecated and it was replaced byROM.runtime(via #653) (@solnic)Schema#[]andRelation#[]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.datasetreceives 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::DSLis now deprecated. Adapters that need customized schema DSL behavior can provide plugins instead (via #656) (@solnic)ROM.pluginsreturns global plugin registry when called without a block (via #660) (@solnic)- [internal]
ROM::Containeris deprecated and it was replaced byROM::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_registryis deprecated, useROM.pluginsinstead (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
Undefinedrather than:defaultso 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 bedb330) (@solnic)
v5.2.6
5.2.6 2021-01-16
Changed
- [rom] Dependency on
rom-corewas bumped to>= 5.2.5(@solnic)
Fixed
- [rom-core] Setup works under MRI 3.0.0 (issue #622 fixed via #623) (@v-kolesnikov)
v5.2.5
Fixed
- [rom-core] auto-registration sorts files now which fixes some (rare) issues with file loading (@v-kolesnikov)
- [rom-core] configuration values are no longer being frozen during finalization of the setup (@v-kolesnikov)
Changed
- [rom] Dependency on
rom-corewas bumped to>= 5.2.4(@solnic)