Skip to content

Commit 209834d

Browse files
krzysiek1507bf4
authored andcommitted
Performance and memory usage fixes (#2309)
* Use select and reject instead of partition.map * Sort adapters keys in place * Just select from options * Add changelog entry
1 parent 22f2cb7 commit 209834d

File tree

4 files changed

+5
-4
lines changed

4 files changed

+5
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Fixes:
1111
- [#2307](https://github.com/rails-api/active_model_serializers/pull/2307) Falsey attribute values should not be reevaluated.
1212

1313
Misc:
14+
- [#2309](https://github.com/rails-api/active_model_serializers/pull/2309) Performance and memory usage fixes
1415

1516
### [v0.10.8 (2018-11-01)](https://github.com/rails-api/active_model_serializers/compare/v0.10.7...v0.10.8)
1617

lib/active_model/serializer/lazy_association.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class Serializer
99
delegate :collection?, to: :reflection
1010

1111
def reflection_options
12-
@reflection_options ||= reflection.options.dup.reject { |k, _| !REFLECTION_OPTIONS.include?(k) }
12+
@reflection_options ||= reflection.options.select { |k, _| REFLECTION_OPTIONS.include?(k) }
1313
end
1414

1515
def object

lib/active_model_serializers/adapter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def adapter_map
3737

3838
# @return [Array<Symbol>] list of adapter names
3939
def adapters
40-
adapter_map.keys.sort
40+
adapter_map.keys.sort!
4141
end
4242

4343
# Adds an adapter 'klass' with 'name' to the 'adapter_map'

lib/active_model_serializers/serializable_resource.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ class SerializableResource
1616
# @return the serializable_resource, ready for #as_json/#to_json/#serializable_hash.
1717
def initialize(resource, options = {})
1818
@resource = resource
19-
@adapter_opts, @serializer_opts =
20-
options.partition { |k, _| ADAPTER_OPTION_KEYS.include? k }.map { |h| Hash[h] }
19+
@adapter_opts = options.select { |k, _| ADAPTER_OPTION_KEYS.include? k }
20+
@serializer_opts = options.reject { |k, _| ADAPTER_OPTION_KEYS.include? k }
2121
end
2222

2323
def serialization_scope=(scope)

0 commit comments

Comments
 (0)