Rails.cache.clear和rake tmp:cache:clear有什么区别?
这两个命令是否相同? 如果不是,有什么区别?
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
在function上与rake tmp:cache:clear
。 但是,如果您使用其他一些cache_store
,如:memory_store
或:mem_cache_store
,则只有Rails.cache.clear
将清除您的应用程序caching。 在这种情况下, rake tmp:cache:clear
将会尝试从"#{Rails.root}/tmp/cache"
删除文件,但是可能实际上不会做任何事情,因为文件系统上可能没有caching任何内容。