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?

La tâche rake efface uniquement 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-L30

Rails.cache.clear fera des choses différentes en fonction du paramétrage 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 alors 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 seul Rails.cache.clear le cache de votre application. Dans ce cas, rake tmp:cache:clear essaiera simplement 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.