为什么我会在开发 Rails 缓存中看到测试环境数据?
我试图像这样缓存一个类变量:
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 附加到缓存键,但似乎两个缓存不应该混合......
I am attempting to cache a class variable like so:
Rails.cache.write("@@page_types", @@page_types)
This method is called within a class I have called PageTypes.
If I start up a rails console and do:
Rails.cache.write("@@page_types", nil)
Rails.cache.read("@@page_types")
I get nil. I leave the console open and do this in another window:
rake test:units
When the tests are over, I switch back to my rails console window and do
Rails.cache.read("@@page_types")
It returns an array of my test page types! I'm positive they are from my test db because the models all have super high IDs, while my dev data all has very low ones.
I suppose I could append Rails.env to the cache keys, but it seems like the two caches shouldn't be mixing....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为您的测试环境定义不同的缓存后端。 memory_store 应该非常适合单元测试。
在 config/environments/test.rb 中:
Define a different cache backend for your test environment. A memory_store should be perfect for unit tests.
in config/environments/test.rb: