2013-09-26 18 views

Odpowiedz

67

Zadanie rake usuwa tylko pliki przechowywane w systemie plików w "#{Rails.root}/tmp/cache". Oto kod dla tego zadania.

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 będzie robić różne rzeczy w zależności od ustawień aplikacji dla config.cache_store. http://guides.rubyonrails.org/caching_with_rails.html#cache-stores

Jeśli używasz config.cache_store = :file_store, wtedy Rails.cache.clear będzie funkcjonalnie identyczne z rake tmp:cache:clear. Jeśli jednak używasz innego modelu cache_store, np. :memory_store lub :mem_cache_store, tylko wyczyszczenie pamięci podręcznej aplikacji zostanie wyczyszczone tylko przez Rails.cache.clear. W takim przypadku rake tmp:cache:clear będzie po prostu próbował usunąć pliki z "#{Rails.root}/tmp/cache", ale prawdopodobnie nic nie zrobi, ponieważ prawdopodobnie nic nie jest buforowane w systemie plików.

+0

Kiedy zmieniliśmy magazyn pamięci podręcznej na: mem_cache_store, zauważyłem, że Rails.cache.clear również rozpoczął czyszczenie wszystkich sesji użytkownika, wylogowując wszystkich użytkowników. Czy to zamierzone zachowanie? Czy istnieje sposób na wyczyszczenie pamięci podręcznej bez dotykania sesji? (Aktualizujemy z Rails 3 do Rails 4) – sandre89

Powiązane problemy