这两个命令是否相同?如果没有,有什么区别?
答案 0 :(得分:74)
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"
中删除文件,但实际上可能不会执行任何操作,因为文件系统上可能没有任何缓存。