web-dev-qa-db-ja.com

Rails.cache.clearとrake tmp:cache:clearの違いは何ですか?

2つのコマンドは同等ですか?そうでない場合、違いは何ですか?

51
Crashalot

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

https://github.com/Rails/rails/blob/ef5d85709d346e55827e88f53430a2cbe1e5fb9e/railties/lib/Rails/tasks/tmp.rake#L25-L

Rails.cache.clearは、config.cache_storeのアプリ設定に応じて異なる処理を行います。 http://guides.rubyonrails.org/caching_with_Rails.html#cache-stores

config.cache_store = :file_storeを使用している場合、Rails.cache.clearrake tmp:cache:clearと機能的に同じです。ただし、cache_store:memory_storeなど、他の:mem_cache_storeを使用している場合は、Rails.cache.clearのみがアプリのキャッシュをクリアします。その場合、rake tmp:cache:clear"#{Rails.root}/tmp/cache"からファイルを削除しようとしますが、ファイルシステムに何もキャッシュされていない可能性があるため、実際には何もしません。

76
Jeremy Green