Schienen - Fragment Cache nicht abläuft
-
23-08-2019 - |
Frage
Dieser hat mich ratlos.
Ich habe eine Ansicht mit einem Cache gespeicherten Fragmente:
- cache :key=>"news" do
%h2 News
- etc
Ich habe eine Kehrmaschine, die verwendet:
def expire_home_cache
puts "expire_home_cache"
expire_fragment(:key => "news")
end
Die Kehrmaschine genannt wird, wie ich „expire_home_cache“ in der Ausgabe der Konsole sehen kann.
Aber das Fragment wird nicht aktualisiert ...
Irgendwelche Ideen?
Lösung
Sie könnten versuchen, diese:
cache("news") do
%h2 News
- etc
end
und ...
def expire_home_cache
puts "expire_home_cache"
expire_fragment("news")
end
... oder versuchen, diese ...
- cache({:key=>"news"}) do
%h2 News
- etc
Ich denke das Problem, dass Rubin sein kann oder Schienen sind die Bestimmung, eine harte Zeit, was der Schlüssel ist, genau und so das Cache-Verfahren und expire_fragment erzeugen zwei verschiedenen Cache-Schlüssel.
Andere Tipps
Versuchen expire_fragment(:key => "news")
mit ActionController::Base.new.expire_fragment(:key => "news")
ersetzen
Keine Zeit zu erklären, aber es funktioniert für mich.
Der richtige Weg, dies zu tun ist:
cache :news do
...
end
Und dann in Ihrer Kehrmaschine:
expire_fragment :news
Dies ist nicht direkt beantworten Ihre Frage, aber haben Sie versucht, die timed_fragment_cache Plugin als Alternative?
http://github.com/tricycle/timed_fragment_cache/tree/master
Ich finde dies eine viel einfachere Art und Weise zu sein, Fragmente in meinen Projekten auslaufender.