I have a block
<% cache 'unique_key', 60.minutes.from_now do %>
...
<% begin %>
...
<% rescue %>
...
<%end>
<% end %>
and I’m trying to make the implementation more robust by only caching (and thus allowing the user to see) the rescue message if there isn’t a previous value already in the cache. Currently, if the response in the begin block sends back an error for any reason, I’m caching the user viewed error message. I would prefer to fall back onto the old cached data. The problem that I can’t get past is –
Where is cache storing the data?
Every time I try Rails.cache.read 'unique_key', I get nil back. Is cache not storing the value in memcached? Is there a way that I can dump the cache to screen?
I couldn’t follow the rails source. It seemed to me the the fragment_for method in cache was a rails 3 thing, and thus, I didn’t debug further.
I solved this by using the fetch method. I used
When I did this, I could successfully find the key. I’m still not sure why I couldn’t find the cached data after adding the
fragment_cache_keythat I found, but usingRails.cache.fetchseemed to do the trick.