Saltar al contenido

Manejo de errores en Rails.cache.fetch

Este escrito ha sido evaluado por expertos así garantizamos la veracidad de este tutorial.

Solución:

Acabo de encontrarme con esto y parece un break resolverá nuestros problemas. Acabo de probar esto localmente contra memory_store y dalli_store y evita el almacenamiento en caché del bloque. Entonces, para tu ejemplo, prueba algo como esto:

Rails.cache.fetch("key") do 
  api.get "/api/data"
  break if api.body.meta.status == 500
  api.body
end

Como nota al margen, si usa dalli_store, no almacenará en caché los valores nulos, por lo que puede devolver cero del bloque.

No usaría fetch, en este caso, y en la mayoría de los casos.

Fetch le permite tener en cuenta todos los casos de control de flujo utilizando el manejo de excepciones como su único mecanismo para el control de flujo (!).

En su lugar, use los métodos de lectura y escritura para el caché, usando el control de flujo normal que da como resultado el comportamiento que desea. Fetch es rápido y elegante, pero viene con un equipaje adicional con el que no estará contento una vez que tenga que admitir el software que escribió.

Reseñas y puntuaciones del tutorial

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *