From d58a6e13b0c891efe8ce3b9375ad66804765663e Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Wed, 15 Mar 2017 17:33:04 -0400 Subject: [PATCH] Move use of serializers cache out of Utils --- lib/active_model/serializable.rb | 6 +++++- lib/active_model/serializable/utils.rb | 14 ++++++-------- lib/active_model/serializer.rb | 5 ++++- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/lib/active_model/serializable.rb b/lib/active_model/serializable.rb index 344d8e4e..d23aae7d 100644 --- a/lib/active_model/serializable.rb +++ b/lib/active_model/serializable.rb @@ -33,7 +33,11 @@ module ActiveModel end def namespace - get_namespace && Utils._const_get(get_namespace) + if module_name = get_namespace + Serializer.serializers_cache.fetch_or_store(module_name) do + Utils._const_get(module_name) + end + end end def embedded_in_root_associations diff --git a/lib/active_model/serializable/utils.rb b/lib/active_model/serializable/utils.rb index 3b5f92c3..efabb6c4 100644 --- a/lib/active_model/serializable/utils.rb +++ b/lib/active_model/serializable/utils.rb @@ -4,15 +4,13 @@ module ActiveModel extend self def _const_get(const) - Serializer.serializers_cache.fetch_or_store(const) do - begin - method = RUBY_VERSION >= '2.0' ? :const_get : :qualified_const_get - Object.send method, const - rescue NameError - const.safe_constantize - end + begin + method = RUBY_VERSION >= '2.0' ? :const_get : :qualified_const_get + Object.send method, const + rescue NameError + const.safe_constantize end end end end -end +end \ No newline at end of file diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index b5ff05da..a89a79a8 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -66,7 +66,10 @@ end ArraySerializer end else - _const_get build_serializer_class(resource, options) + klass_name = build_serializer_class(resource, options) + Serializer.serializers_cache.fetch_or_store(klass_name) do + _const_get(klass_name) + end end end