2013-07-25 75 views
2

我無法在開發或生產環境中從控制檯看到緩存中的任何內容。控制檯的Rails緩存沒有任何返回無

對於開發,我打開緩存並將其設置爲內存存儲,在生產中我使用Heroku上的dalli gem和Memcachier。

我試過的每個鍵都回零。

然而,在發展中,如果我把一個binding.pry某個地方我做了Rails.cache.fetch之前,我可以做一個Rails.cache.read那裏看到的東西回來,確實如果是這樣,執行不轉到fetch的塊。

從控制檯中,如果我嘗試Rails.cache.read與剛剛在pry斷點控制檯中返回緩存結果的密鑰相同,我什麼也沒得到。看起來控制檯有一個單獨的緩存,好像從控制檯我做Rails.cache.write("whatever", "blah")Rails.cache.read("whatever"),我得到「blah」作爲回報,如預期的那樣。

有沒有辦法從控制檯嘗試正在運行的服務器的緩存?

回答

4

更改緩存存儲:內存存儲只是將所有內容都存儲在進程的內存中,因此應用程序的每個實例都將具有單獨的緩存。特別是控制檯不會看到正在運行的Web應用程序設置的任何內容。

您可以使用文件存儲(它將數據存儲在tmp中的臨時文件中),或者您也可以在本地使用dalli存儲 - memcached非常易於運行。

+0

好吧,這對開發很有用,但我仍然沒有收到任何產品,但我會接受你的回答,因爲它確實回答了我問的問題。對於視圖中的片段緩存,我在HAML中執行' - cache(「the_key」)「操作,我可以使用Rails.cache.read從控制檯訪問它嗎?即使在切換到文件存儲之後,即使在開發過程中,也不是如此。我怎樣才能得到這個緩存的東西? –

+1

NM,我發現我自己的答案,使用'ActionController :: Base.new.fragment_cache_key(「the_key」)'我得到稍微修改後的緩存鍵(在這種情況下,與'查看/'前置),並且可以讀取與'Rails.cache.read'和那個修改過的或者只有'ActionController :: Base.new.read_fragment(「the_key」)'用未修改的密鑰來讀取。感謝您的回答! –

相關問題