class FastSerializer::ArraySerializer

Serializer implementation for serializing an array of objects. This class allows taking advantage of a single SerializationContext for caching duplicate serializers.

Public Class Methods

new(object, options = nil) click to toggle source
Calls superclass method FastSerializer::Serializer::new
# File lib/fast_serializer/array_serializer.rb, line 12
def initialize(object, options = nil)
  super(Array(object), options)
end

Public Instance Methods

as_json(*args) click to toggle source
Calls superclass method FastSerializer::Serializer#as_json
# File lib/fast_serializer/array_serializer.rb, line 54
def as_json(*args)
  if array.nil?
    nil
  elsif array.empty?
    []
  else
    super[:array]
  end
end
Also aliased as: to_a
cache() click to toggle source
Calls superclass method FastSerializer::Serializer#cache
# File lib/fast_serializer/array_serializer.rb, line 44
def cache
  if option(:cache)
    true
  elsif option(:serializer)
    option(:serializer).cache
  else
    super
  end
end
cache_key() click to toggle source
Calls superclass method FastSerializer::Serializer#cache_key
# File lib/fast_serializer/array_serializer.rb, line 16
def cache_key
  if option(:serializer)
    array.collect(&:cache_key)
  else
    super
  end
end
cache_ttl() click to toggle source
Calls superclass method FastSerializer::Serializer#cache_ttl
# File lib/fast_serializer/array_serializer.rb, line 34
def cache_ttl
  if option(:cache_ttl)
    true
  elsif option(:serializer)
    option(:serializer).cache_ttl
  else
    super
  end
end
cacheable?() click to toggle source
Calls superclass method FastSerializer::Serializer#cacheable?
# File lib/fast_serializer/array_serializer.rb, line 24
def cacheable?
  if option(:cacheable) || self.class.cacheable?
    true
  elsif option(:serializer)
    option(:serializer).cacheable?
  else
    super
  end
end
to_a(*args)
Alias for: as_json

Protected Instance Methods

load_from_cache() click to toggle source
# File lib/fast_serializer/array_serializer.rb, line 70
def load_from_cache
  if cache
    values = cache.fetch_all(array, cache_ttl){|serializer| serializer.as_json}
    {:array => values}
  else
    load_hash
  end
end

Private Instance Methods

array() click to toggle source
# File lib/fast_serializer/array_serializer.rb, line 81
def array
  unless defined?(@_array)
    serializer = option(:serializer)
    if serializer
      serializer_options = option(:serializer_options)
      @_array = object.collect{|obj| serializer.new(obj, serializer_options)}
    else
      @_array = object
    end
  end
  @_array
end