Deshabilitar el almacenamiento en caché de Rails si Redis está inactivo

Estoy utilizando Rails 4.1 y configuro el nodo compartido de Redis ElasticCache para el almacenamiento en caché. Intenté https://github.com/redis-store/redis-store y https://github.com/sorentwo/readthis y me parecen geniales.

¿Pero qué pasa si Redis está caído? Tanto readthis como redis-store fallan completamente. Prefiero que el sitio sea lento sin caché que muerto.

¿Alguien tiene ideas? Os doy las gracias de antemano.

A partir de https://github.com/sorentwo/readthis/pull/30, está disponible directamente en Readthis. Estará disponible en la próxima versión 1.2. Desde el README:

En algunas situaciones, es deseable mantener las solicitudes de servicio desde el disco o la base de datos si Redis falla. Esto se puede lograr con la tolerancia a fallos de conexión habilitándolo en el nivel superior:

Readthis.fault_tolerant = true

El valor predeterminado es falso, ya que si bien puede funcionar para operaciones de recuperación, no es compatible con otros comandos basados ​​en estado como incremento.

Aquí hay una discusión interesante sobre este tema: No bloquee la aplicación si redis está fuera

Dado que el problema aún está abierto y no fusionaron ninguna solución aún, puedes usar una de las pocas sugerencias de la discusión, es decir, parches de mono como este:

# patch to do not crash on redis backend errors # https://github.com/redis-store/redis-rails/issues/14 module ActiveSupport module Cache class RedisStore %w[increment decrement clear read_entry write_entry delete_entry].each do |method| define_method "#{method}_with_rescue" do |*args, &block| begin self.send "#{method}_without_rescue", *args, &block rescue nil end end alias_method_chain method, :rescue end end end end