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 

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_storeRails.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任何内容。