Class: ActiveModel::Serializer::Adapter::CachedSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/active_model/serializer/adapter/cached_serializer.rb

Instance Method Summary (collapse)

Constructor Details

- (CachedSerializer) initialize(serializer)

Returns a new instance of CachedSerializer



5
6
7
8
# File 'lib/active_model/serializer/adapter/cached_serializer.rb', line 5

def initialize(serializer)
  @cached_serializer = serializer
  @klass             = @cached_serializer.class
end

Instance Method Details

- (Object) cache_check(adapter_instance)



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/active_model/serializer/adapter/cached_serializer.rb', line 10

def cache_check(adapter_instance)
  if cached?
    @klass._cache.fetch(cache_key, @klass._cache_options) do
      yield
    end
  elsif fragment_cached?
    FragmentCache.new(adapter_instance, @cached_serializer, adapter_instance.instance_options).fetch
  else
    yield
  end
end

- (Object) cache_key



30
31
32
33
34
35
# File 'lib/active_model/serializer/adapter/cached_serializer.rb', line 30

def cache_key
  parts = []
  parts << object_cache_key
  parts << @klass._cache_digest unless @klass._cache_options && @klass._cache_options[:skip_digest]
  parts.join('/')
end

- (Boolean) cached?

Returns:

  • (Boolean)


22
23
24
# File 'lib/active_model/serializer/adapter/cached_serializer.rb', line 22

def cached?
  @klass._cache && !@klass._cache_only && !@klass._cache_except
end

- (Boolean) fragment_cached?

Returns:

  • (Boolean)


26
27
28
# File 'lib/active_model/serializer/adapter/cached_serializer.rb', line 26

def fragment_cached?
  @klass._cache_only && !@klass._cache_except || !@klass._cache_only && @klass._cache_except
end

- (Object) object_cache_key



37
38
39
40
41
# File 'lib/active_model/serializer/adapter/cached_serializer.rb', line 37

def object_cache_key
  object_time_safe = @cached_serializer.object.updated_at
  object_time_safe = object_time_safe.strftime('%Y%m%d%H%M%S%9N') if object_time_safe.respond_to?(:strftime)
  (@klass._cache_key) ? "#{@klass._cache_key}/#{@cached_serializer.object.id}-#{object_time_safe}" : @cached_serializer.object.cache_key
end