All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Deprecate
inference
related methods in favor of a unifiedinflector
interface. Deprecated methods are:Alba.enable_inference!
,Alba.disable_inference!
, andAlba.inferring
. UseAlba.inflector = :active_support/:dry
orAlba.inflector = SomeInflector
to enable. UseAlba.inflector = nil
to disable. UseAlba.inflector
to check if enabled.
- All Hash-related methods now return String keys instead of Symbol keys.
This affects all users, but you can use
deep_symbolize_keys
in Rails environment if you prefer Symbol keys, orwith_indifferent_access
to support both String and Symbol keys. Some DSLs that take key argument such ason_nil
andon_error
, are also affected. - Remove deprecated methods:
Resource#to_hash
,Resource.ignoring
,Alba.on_nil
,Alba.on_error
,Alba.enable_root_key_transformation!
andAlba.disable_root_key_transformation!
- If using
transform_keys
, the default inflector is no longer set by default d02245c8 To retain this functionality in Rails, add an initializer with the following:Alba.enable_inference!(with: :active_support)
- Passing an initial object to proc function in associations #209
- Allow association resource to be Proc #213
collection_key
to serialize collection into a Hash #119- params is now overridable #227
- Key transformation now cascades #232
- nested attribute #237
- Implement
as_json
#249
- fix the bug where nesting is empty string and invalid
handle_error
now raises the same error- let Rails implicitly call
to_json
- [Feat] Support instance method as an attribute
- [Fix] Explicitly raise error when inference is disabled
- [Improve]
enable_inference!
now takes inflector as argument - [Improve]
transform_keys
now accepts:snake
and:none
- [Deprecate]
to_hash
is special method and should not be used - [Deprecate]
ignoring
in favor ofattributes
overriding - [Deprecate]
Alba.on_nil
,Alba.on_error
andAlba.enable_root_key_transformation!
- [Feat] Add nil handler
- [Feat] Implement layout feature
- [Improve] if option now works with Symbol
- [Improve] Add an alias for serialize
- [Improve] Deprecation warning now printed with caller
- [Feat] Add a config method to set encoder directly
- [Feat] Implement
meta
method and option for metadata - [Feat] Add
root_key
option toResource#serialize
- [Feat] Enable setting key for collection with
root_key
- [Feat] Add
Resource.root_key
andResource.root_key!
- [Feat]
Alba.serialize
now infers resource class - [Deprecated]
Resource.key
andResource.key!
are deprecated
- [Perf] Improve performance for
many
[641d8f9] - [Feat] Add custom inflector feature (#126) [ad73291]
- okuramasafumi#126
- Thank you @wuarmin !
- [Feat] Support params in if condition [6e9915e]
- [Fix] fundamentally broken "circular association control" [fbbc9a1]
- [Fix] multiple word key inference [6c18e73]
- okuramasafumi#120
- Thank you @alfonsojimenez !
- [Feat] Add
Alba.enable_root_key_transformation!
[f172839] - [Feat] Implement type validation and auto conversion [cbe00c7]
- [Feat] Implement circular associations control [71e1543]
- [Feat] Support :oj_rails backend [76e519e]
- [Fix] Don't cache resource class for
Alba.serialize
[9ed5253] - [Improve] Warn when
ActiveSupport
orOj
are absent [d3ab3eb] - [Fix] Delete unreachable
to_hash
method on Association [1ba1f90] - [Fix] Stringify key before transforming [b4eb79e]
- [Misc] Support Ruby 2.5.0 and above, not 2.5.7 and above [43f1d17]
- [Fix] Remove accidentally added
p
debug [5d0324b]
This is the first major release of Alba and it includes so many features. To see all the features you can have a look at README.