2つのコマンドは同等ですか?そうでない場合、違いは何ですか?
Rakeタスクは、"#{Rails.root}/tmp/cache"
のファイルシステムに保存されているファイルのみを消去します。そのタスクのコードは次のとおりです。
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
は、config.cache_store
のアプリ設定に応じて異なる処理を行います。 http://guides.rubyonrails.org/caching_with_Rails.html#cache-stores
config.cache_store = :file_store
を使用している場合、Rails.cache.clear
はrake tmp:cache:clear
と機能的に同じです。ただし、cache_store
や:memory_store
など、他の:mem_cache_store
を使用している場合は、Rails.cache.clear
のみがアプリのキャッシュをクリアします。その場合、rake tmp:cache:clear
は"#{Rails.root}/tmp/cache"
からファイルを削除しようとしますが、ファイルシステムに何もキャッシュされていない可能性があるため、実際には何もしません。