Expiring Cache Fragments In The Rails Console
One of the much larger Rails applications I work on makes heavy use of caching for obvious reasons. In some locations the cache isn’t auto-expiring at the moment. After doing a deployment I needed to expire these sections manually via the console for my first time. I grabbed the name of the fragment from the view where it was being cached.
- cache('all_category_judges') do
...
I only knew one way to access the cache in the console and attempted clearing the cache fragment from there.
$ rails c
> Rails.cache.delete('all_category_judges')
> nil
This didn’t work. After some reading I found out that Fragment caching is stored in a slightly different way and needs to be accessed via the controller.
Given the time I’ll do some more investigation on why the caching is handled differently.
> ActionController::Base.new.expire_fragment('all_category_judges')
> true
This gave me access to the fragement and allowed me to clear it.