【问题标题】:Why am I seeing test environment data in my development Rails cache?为什么我在开发 Rails 缓存中看到测试环境数据?
【发布时间】:2011-07-06 02:47:04
【问题描述】:

我正在尝试像这样缓存一个类变量:

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

这个方法在我称为 PageTypes 的类中调用。

如果我启动 Rails 控制台并执行以下操作:

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

我得到零。我让控制台保持打开状态,然后在另一个窗口中执行此操作:

rake 测试:单位

测试结束后,我切换回 Rails 控制台窗口并执行

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

它返回一个我的测试页类型的数组!我很肯定它们来自我的测试数据库,因为这些模型都有超高 ID,而我的开发数据都有非常低的 ID。

我想我可以将 Rails.env 附加到缓存键,但似乎两个缓存不应该混合......

【问题讨论】:

    标签: ruby-on-rails caching development-environment


    【解决方案1】:

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

    ActionController::Base.cache_store = :memory_store
    

    在 config/environments/test.rb:

    config.cache_store = :memory_store
    

    【讨论】:

    • 啊,好主意!效果很好:)
    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2012-09-29
    • 2012-04-11
    相关资源
    最近更新 更多