spi*_*ton 4 caching development-environment ruby-on-rails
我试图像这样缓存一个类变量:
Rails.cache.write("@@page_types", @@page_types)
Run Code Online (Sandbox Code Playgroud)
在我调用PageTypes的类中调用此方法.
如果我启动rails控制台并执行:
Rails.cache.write("@@page_types", nil)
Rails.cache.read("@@page_types")
Run Code Online (Sandbox Code Playgroud)
我没事.我打开控制台,在另一个窗口中执行此操作:
耙子测试:单位
测试结束后,我切换回我的rails控制台窗口并执行操作
Rails.cache.read("@@page_types")
Run Code Online (Sandbox Code Playgroud)
它返回我的测试页类型的数组!我很肯定他们来自我的测试数据库,因为模型都有超高ID,而我的开发数据都非常低.
我想我可以将Rails.env附加到缓存键,但似乎两个缓存不应该混合....
为您的测试环境定义不同的缓存后端.memory_store应该是单元测试的完美选择.
ActionController::Base.cache_store = :memory_store
Run Code Online (Sandbox Code Playgroud)
在config/environments/test.rb中:
config.cache_store = :memory_store
Run Code Online (Sandbox Code Playgroud)