2011-07-06 76 views
4

我試圖緩存類變量,像這樣:爲什麼我在開發Rails緩存中看到測試環境數據?

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

這種方法是一類我稱之爲PageTypes中調用。

如果我啓動了一個軌道控制檯,並做到:

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

我得到零。我離開控制檯打開併爲此在另一個窗口:

耙測試:單位

當測試結束後,我切換回我的rails控制檯窗口,並做

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

它返回一個我的測試頁面類型的數組!我是積極的,他們來自我的測試數據庫,因爲模型都有超高ID,而我的開發數據都非常低。

我想我可以追加Rails.env到緩存鍵,但它似乎像兩個緩存不應混合....

回答

7

定義您的測試環境中的不同緩存後端。 memory_store應該是單元測試的完美選擇。

ActionController::Base.cache_store = :memory_store 

在配置/環境/ test.rb:

config.cache_store = :memory_store 
+0

啊,好主意!工作很棒:) – spilliton

相關問題