diff --git a/CHANGELOG.md b/CHANGELOG.md index 34eb2298a..f886d3b28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Breaking changes: - [#1574](https://github.com/rails-api/active_model_serializers/pull/1574) Default key case for the JsonApi adapter changed to dashed. (@remear) Features: +- [#1687](https://github.com/rails-api/active_model_serializers/pull/1687) Only calculate `_cache_digest` (in `cache_key`) when `skip_digest` is false. (@bf4) - [#1647](https://github.com/rails-api/active_model_serializers/pull/1647) Restrict usage of `serializable_hash` options to the ActiveModel::Serialization and ActiveModel::Serializers::JSON interface. (@bf4) - [#1645](https://github.com/rails-api/active_model_serializers/pull/1645) Transform keys referenced in values. (@remear) diff --git a/lib/active_model/serializer/caching.rb b/lib/active_model/serializer/caching.rb index 60c7ef701..b3663d631 100644 --- a/lib/active_model/serializer/caching.rb +++ b/lib/active_model/serializer/caching.rb @@ -18,8 +18,9 @@ module Caching # force # race_condition_ttl # Passed to ::_cache as - # serializer._cache.fetch(cache_key, @klass._cache_options) - serializer.class_attribute :_cache_digest # @api private : Generated + # serializer.cache_store.fetch(cache_key, @klass._cache_options) + # Passed as second argument to serializer.cache_store.fetch(cache_key, self.class._cache_options) + serializer.class_attribute :_cache_digest_file_path # @api private : Derived at inheritance end end @@ -42,7 +43,12 @@ module ClassMethods def inherited(base) super caller_line = caller[1] - base._cache_digest = digest_caller_file(caller_line) + base._cache_digest_file_path = caller_line + end + + def _cache_digest + return @_cache_digest if defined?(@_cache_digest) + @_cache_digest = digest_caller_file(_cache_digest_file_path) end # Hashes contents of file for +_cache_digest+