Sind die beiden Befehle gleichwertig? Wenn nicht, was ist der Unterschied?Was ist der Unterschied zwischen Rails.cache.clear und Rake tmp: cache: clear?
Antwort
Der Rake-Task löscht nur Dateien, die im Dateisystem unter "#{Rails.root}/tmp/cache"
gespeichert sind. Hier ist der Code für diese Aufgabe.
namespace :cache do
# desc "Clears all files and directories in tmp/cache"
task :clear do
FileUtils.rm_rf(Dir['tmp/cache/[^.]*'])
end
end
Rails.cache.clear
werden verschiedene Dinge tun, je nach Ihren Anwendungen für config.cache_store
Einstellung. http://guides.rubyonrails.org/caching_with_rails.html#cache-stores
Wenn Sie config.cache_store = :file_store
verwenden, ist Rails.cache.clear
funktionell identisch mit rake tmp:cache:clear
. Wenn Sie jedoch eine andere cache_store
, wie :memory_store
oder :mem_cache_store
verwenden, löscht nur Rails.cache.clear
Ihren App-Cache. In diesem Fall wird rake tmp:cache:clear
nur versuchen, Dateien von "#{Rails.root}/tmp/cache"
zu entfernen, wird aber wahrscheinlich nichts tun, da wahrscheinlich nichts im Dateisystem zwischengespeichert wird.
Als wir den Cache-Speicher in mem_cache_store änderten, bemerkte ich, dass Rails.cache.clear auch alle Benutzersitzungen löschte und alle Benutzer abmeldete. Ist das das beabsichtigte Verhalten? Gibt es eine Möglichkeit, den Cache zu löschen, ohne die Sitzungen zu berühren? (Wir aktualisieren von Rails 3 auf Rails 4) – sandre89