Rails - cache fragment ne venant à échéance
-
23-08-2019 - |
Question
Celui-ci m'a déconcerté.
J'ai vue avec un fragment cache:
- cache :key=>"news" do
%h2 News
- etc
J'ai une balayeuse qui utilise:
def expire_home_cache
puts "expire_home_cache"
expire_fragment(:key => "news")
end
La balayeuse est appelée comme je peux voir « expire_home_cache » dans la sortie de la console.
Mais le fragment est pas mis à jour ...
Toutes les idées?
La solution
Vous pouvez essayer ceci:
cache("news") do
%h2 News
- etc
end
et ...
def expire_home_cache
puts "expire_home_cache"
expire_fragment("news")
end
... ou essayer ...
- cache({:key=>"news"}) do
%h2 News
- etc
Je pense la question peut être que rubis ou des rails est un moment difficile de déterminer ce que la clé est exactement et si la méthode de cache et expire_fragment génèrent deux clés de cache différentes.
Autres conseils
Essayez de remplacer expire_fragment(:key => "news")
avec ActionController::Base.new.expire_fragment(:key => "news")
Pas le temps d'expliquer, mais cela a fonctionné pour moi.
La bonne façon de faire est:
cache :news do
...
end
Et puis dans votre balayeuse:
expire_fragment :news
Cela ne répond pas directement à votre question, mais avez-vous essayé le plugin timed_fragment_cache comme alternative?
http://github.com/tricycle/timed_fragment_cache/tree/master
Je trouve que cela est une manière beaucoup plus simple d'expirer fragments dans mes projets.