Effacer manuellement le Cache de Fragment dans les Rails
Je suis à l'utilisation de Memcached avec Heroku pour Rails 3.1 application. J'ai eu un bug et le mal de choses sont en train de montrer - les paramètres sont incorrects pour le cache.
J'ai eu ceci:
<% cache("foo_header_cache_#{@user.id}") do %>
J'ai enlevé le fragment de la mise en cache et poussé à Heroku et les données de mauvaise qualité s'en alla.
Et puis je l'ai changé pour:
<% cache("foo_header_cache_#{@foo.id}") do %>
Cependant, quand j'ai corrigé les paramètres, à partir de @utilisateur @foo, le vieux [incorrect] version mise en cache a montré encore une fois (au lieu d'actualiser avec les données correctes).
Comment puis-je manuellement cette expiration, ou au contraire de se débarrasser de cette mauvaise de données qui montre?
Vous devez vous connecter pour publier un commentaire.
J'ai fini manuellement de compensation de l'intégralité du cache en allant dans la console rails et à l'aide de la commande:
À partir de la console rails:
Vous êtes ici:
Référence:
- Comment appeler expire_fragment de Rails Observateur/Modèle?
À partir de la console:
Vous pouvez exécuter ce (ie. si vous connaissez l'id est '1')
À utiliser
Rails.cache.delete
vous besoin de connaître le nom du fragment. Dans votre cas, il seraitSi vous avez un tableau à base de clé de cache à l'aide d'objets, tels que:
Ensuite, vous pouvez obtenir le nom du fragment comme
Le nom inclut le
id
etupdated_at
temps de tous les objets (à l'aaaammjjhhmmss). Il serait quelque chose comme "vues/foo_header_cache/utilisateurs/1-20160901021000"Ou tout simplement l'effacer à l'aide de la matrice.