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

发布于 2024-11-18 12:57:53 字数 540 浏览 3 评论 0原文

我试图像这样缓存一个类变量:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感情废物 2024-11-25 12:57:53

为您的测试环境定义不同的缓存后端。 memory_store 应该非常适合单元测试。

ActionController::Base.cache_store = :memory_store

在 config/environments/test.rb 中:

config.cache_store = :memory_store

Define a different cache backend for your test environment. A memory_store should be perfect for unit tests.

ActionController::Base.cache_store = :memory_store

in config/environments/test.rb:

config.cache_store = :memory_store
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文