Les deux commandes sont-elles équivalentes? Si non, quelle est la différence?
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
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.