Являются ли эти две команды эквивалентными? Если нет, то какая разница?
В чем разница между Rails.cache.clear и rake tmp: cache: clear?
Ответ 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
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"
, но, вероятно, на самом деле ничего не сделает, поскольку в файловой системе, вероятно, не кэшируется.