1. ホーム
  2. ruby-on-rails

[解決済み] Rails.cache.clearとrake tmp:cache:clearの違いは何ですか?

2022-03-09 16:20:49

質問

この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

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

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" が、おそらくファイルシステム上に何もキャッシュされていないため、実際には何もしないでしょう。