Подтвердить что ты не робот

В чем разница между Rails.cache.clear и rake tmp: cache: clear?

Являются ли эти две команды эквивалентными? Если нет, то какая разница?

4b9b3361

Ответ 1

Задача 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", но, вероятно, на самом деле ничего не сделает, поскольку в файловой системе, вероятно, не кэшируется.