is Rails.cache purged between tests?

前端 未结 2 1078
半阙折子戏
半阙折子戏 2020-12-24 00:57

We cache id/path mapping using Rails.cache in a Rails 3.2 app. On some machines it works OK, but on the others values are wrong. The cause is hard to track so I

相关标签:
2条回答
  • 2020-12-24 01:36

    A more efficient (and easier) method is to set the test environment's cache to use NullStore:

    # config/environments/test.rb:
    config.cache_store = :null_store
    

    The NullStore ensures that nothing will ever be cached.

    For instance in the code below, it will always fall through to the block and return the current time:

    Rails.cache.fetch('time') { Time.now }
    

    Also see the Rails Caching guide: http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-nullstore

    0 讨论(0)
  • 2020-12-24 01:53

    Add:

    before(:all) do
      Rails.cache.clear
    end
    

    to have the cache cleared before each spec file is run.

    Add:

    before(:each) do
      Rails.cache.clear
    end
    

    to have the cache cleared before each spec.

    You can put this inside spec/spec_helper.rb within the RSpec.configure block to have it applied globally (recommended over scattering it per spec file or case).

    RSpec by default does not clear that cache automatically.

    0 讨论(0)
提交回复
热议问题