为什么我在我的开发Rails缓存中看到测试环境数据?

4
我尝试缓存一个类变量,代码如下:
Rails.cache.write("@@page_types", @@page_types)

这个方法是在我创建的一个叫做PageTypes的类中调用的。

如果我启动Rails控制台并执行:

Rails.cache.write("@@page_types", nil)
Rails.cache.read("@@page_types")

我得到了空值。我保持控制台打开并在另一个窗口中执行以下操作:

rake test:units

当测试结束时,我切换回我的Rails控制台窗口并执行以下操作:

Rails.cache.read("@@page_types")

它返回我的测试页面类型的数组!我有把握它们来自我的测试数据库,因为这些模型都具有非常高的ID,而我的开发数据都有非常低的ID。

我想如果将Rails.env附加到缓存键上似乎可以解决问题,但是这两个缓存不应该混合在一起....

1个回答

7

为您的测试环境定义一个不同的缓存后端。memory_store(内存存储)应该是单元测试的完美选择。

ActionController::Base.cache_store = :memory_store

在 config/environments/test.rb 文件中:
config.cache_store = :memory_store

啊,太棒了的想法!运行得很好 :) - spilliton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接