diff --git a/lib/active_model/array_serializer.rb b/lib/active_model/array_serializer.rb index f0a2ab02..15f24523 100644 --- a/lib/active_model/array_serializer.rb +++ b/lib/active_model/array_serializer.rb @@ -1,4 +1,6 @@ require "active_support/core_ext/class/attribute" +require 'active_support/dependencies' +require 'active_support/descendants_tracker' module ActiveModel # Active Model Array Serializer @@ -11,6 +13,8 @@ module ActiveModel # ActiveModel::ArraySerializer.root = false # class ArraySerializer + extend ActiveSupport::DescendantsTracker + attr_reader :object, :options class_attribute :root diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index b070664c..9d772a1d 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -1,5 +1,7 @@ require "active_support/core_ext/class/attribute" require "active_support/core_ext/module/anonymous" +require 'active_support/dependencies' +require 'active_support/descendants_tracker' module ActiveModel # Active Model Serializer @@ -36,6 +38,8 @@ module ActiveModel # end # class Serializer + extend ActiveSupport::DescendantsTracker + INCLUDE_METHODS = {} INSTRUMENT = { :serialize => :"serialize.serializer", :associations => :"associations.serializer" } diff --git a/lib/active_model_serializers.rb b/lib/active_model_serializers.rb index 55709e0e..d27eb4b7 100644 --- a/lib/active_model_serializers.rb +++ b/lib/active_model_serializers.rb @@ -33,14 +33,12 @@ module ActiveModel::SerializerSupport module ClassMethods #:nodoc: if "".respond_to?(:safe_constantize) def active_model_serializer - @active_model_serializer ||= "#{self.name}Serializer".safe_constantize + "#{self.name}Serializer".safe_constantize end else def active_model_serializer - return @active_model_serializer if defined?(@active_model_serializer) - begin - @active_model_serializer = "#{self.name}Serializer".constantize + "#{self.name}Serializer".constantize rescue NameError => e raise unless e.message =~ /uninitialized constant/ end