Is there a way to make Rails.cache.fetch always execute the code block
in the test environment? (disable caching)
For example in my test console on Rails 3
ruby-1.9.2-rc2 > Rails.cache.fetch('foo') {'bar'}
=> "bar"
ruby-1.9.2-rc2 > Rails.cache.fetch('foo') {'bar44'}
=> "bar"
Caching is on. Using filestore
ruby-1.9.2-rc2 > Rails.cache
=> #<ActiveSupport::Cache::FileStore
Is there a ActiveSupport::Cache::Store implementation that doesn't
cache? I'm assuming I'm just missing something trivial since this is
easily disabled for page/action/fragment caching with
config.action_controller.perform_caching = false
I have...
ruby-1.9.2-rc2 >
Rails.application.config.action_controller.perform_caching
=> false
What am I missing? Thanks
Tony
on 2010-09-02 15:21
on 2010-09-02 16:57
2 solutions...
If you want caching on in test mode (good way to test it is doing what
you expect) you can simply clear the cache between tests.
def setup
Rails.cache.clear
end
Or you can write a cache that doesn't store anything.
put this in lib/active_support/cache/no_store.rb
module ActiveSupport
module Cache
class NoStore < Store
def read_entry(name, options)
return nil
end
def write_entry(name, value, options)
end
def delete_entry(name, options)
end
end
end
end
then add config.cache_store = :no_store to your test.rb file.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.