Sha256: 254e2332b34a1b5c1322a8bc8d220c9b3ae78723ac172673480c3f2888f6b715

Contents?: true

Size: 764 Bytes

Versions: 2

Compression:

Stored size: 764 Bytes

Contents

class SchemaSerializer
  class Constantizer
    class << self
      def find(name)
        return cached_serializers.fetch(name) if cached_serializers.has_key?(name)
        return nil                            if non_existent_serializers.include?(name)

        klass = name.safe_constantize
        if klass.present?
          cached_serializers[name] = klass
          return klass
        end

        non_existent_serializers << name
        nil
      end

      def refresh!
        @non_existent_serializers = []
        @serializers = {}
      end

      private

        def non_existent_serializers
          @non_existent_serializers ||= []
        end

        def cached_serializers
          @cached_serializers ||= {}
        end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
schema_serializer-0.2.7 lib/schema_serializer/constantizer.rb
schema_serializer-0.2.6 lib/schema_serializer/constantizer.rb