What is the difference between Rails.cache.clear and rake tmp:cache:clear?

Ruby on-RailsRuby on-Rails-3Ruby on-Rails-3.2Rake

Ruby on-Rails Problem Overview


Are the two commands equivalent? If not, what's the difference?

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

The rake task only clears out files that are stored on the filesystem in "#{Rails.root}/tmp/cache". Here's the code for that task.

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 will do different things depending on your apps setting for config.cache_store. http://guides.rubyonrails.org/caching_with_rails.html#cache-stores

If you are using config.cache_store = :file_store then Rails.cache.clear will be functionally identical to rake tmp:cache:clear. However, if you're using some other cache_store, like :memory_store or :mem_cache_store, then only Rails.cache.clear will clear your app cache. In that case rake tmp:cache:clear will just try to remove files from "#{Rails.root}/tmp/cache" but probably won't actually do anything since nothing is probably being cached on the filesystem.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCrashalotView Question on Stackoverflow
Solution 1 - Ruby on-RailsJeremy GreenView Answer on Stackoverflow