2013-09-26 6 views

Antwort

67

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 

https://github.com/rails/rails/blob/ef5d85709d346e55827e88f53430a2cbe1e5fb9e/railties/lib/rails/tasks/tmp.rake#L25-L30

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.

+0

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

Verwandte Themen