module Datadog::Contrib::ActiveSupport::Cache::Redis::Patcher
Patching behavior for Redis
with ActiveSupport
Public Instance Methods
cache_store_class(meth)
click to toggle source
Calls superclass method
# File lib/ddtrace/contrib/active_support/cache/redis.rb, line 29 def cache_store_class(meth) if patch_redis?(meth) ::ActiveSupport::Cache::RedisStore else super end end
patch_redis?(meth)
click to toggle source
For Rails
< 5.2 w/ redis-activesupport… When Redis
is used, we can't only patch Cache::Store as it is Cache::RedisStore, a sub-class of it that is used, in practice. We need to do a per-method monkey patching as some of them might be redefined, and some of them not. The latest version of redis-activesupport redefines write but leaves untouched read and delete: github.com/redis-store/redis-activesupport/blob/v4.1.5/lib/active_support/cache/redis_store.rb
For Rails
>= 5.2 w/o redis-activesupport… ActiveSupport
includes a Redis
cache store internally, and does not require these overrides. github.com/rails/rails/blob/master/activesupport/lib/active_support/cache/redis_cache_store.rb
# File lib/ddtrace/contrib/active_support/cache/redis.rb, line 23 def patch_redis?(meth) !Gem.loaded_specs['redis-activesupport'].nil? \ && defined?(::ActiveSupport::Cache::RedisStore) \ && ::ActiveSupport::Cache::RedisStore.instance_methods(false).include?(meth) end