web-dev-qa-db-fra.com

Quelle est la différence entre Rails.cache.clear et rake tmp: cache: clear?

Les deux commandes sont-elles équivalentes? Si non, quelle est la différence?

51
Crashalot

La tâche rake n’efface que les fichiers stockés sur le système de fichiers dans "#{Rails.root}/tmp/cache". Voici le code pour cette tâche.

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-L

Rails.cache.clear fera différentes choses en fonction du réglage de vos applications pour config.cache_store. http://guides.rubyonrails.org/caching_with_Rails.html#cache-stores

Si vous utilisez config.cache_store = :file_store puis Rails.cache.clear sera fonctionnellement identique à rake tmp:cache:clear. Cependant, si vous utilisez un autre cache_store, comme :memory_store ou :mem_cache_store, alors seulement Rails.cache.clear effacera le cache de votre application. Dans ce cas rake tmp:cache:clear va juste essayer de supprimer les fichiers de "#{Rails.root}/tmp/cache" mais ne fera probablement rien, car rien n’est probablement mis en cache sur le système de fichiers.

76
Jeremy Green