Rails.cache是否在testing之间被清除?
我们在Rails 3.2应用程序中使用Rails.cache
来cachingid /path映射。 在一些机器上,它工作正常,但其他值是错误的。 原因很难跟踪,所以我有一些关于Rails.cache
本身的问题。 它在testing之间被清除了吗? 在testing模式下是否有可能使用开发模式caching的值? 如果没有清除,我怎么能在运行规格之前呢?
我的caching存储configuration是:
#in: config/environments/development.rb config.cache_store = :memory_store, {:size => 64.megabytes} #in: config/environments/production.rb # config.cache_store = :mem_cache_store
更高效(更简单)的方法是将testing环境的caching设置为使用NullStore:
# config/environments/test.rb: config.cache_store = :null_store
NullStore确保什么都不会被caching。
例如在下面的代码中,它会一直跳到代码块并返回当前时间:
Rails.cache.fetch('time') { Time.now }
另请参阅Railscaching指南: http : //guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-nullstore
加:
before(:all) do Rails.cache.clear end
在每个spec文件运行之前清除caching。
加:
before(:each) do Rails.cache.clear end
在每个规范之前清除caching。
你可以把它放在RSpec.configure
模块的spec/spec_helper.rb
中, RSpec.configure
在全局范围内使用(build议在每个spec文件或案例中散布它)。
RSpec默认不会自动清除caching。