2011-04-12 32 views
16

在發展的發展模式,下面(簡化)語句總是記錄緩存未命中,在生產它按預期工作:Rails3中 - 緩存與Rails.cache.fetch

@categories = Rails.cache.fetch("categories", :expires_in => 5.minutes) do 
    Rails.logger.info "+++ Cache missed +++" 
    Category.all 
end 

如果我改變config.cache_classes從config/development.rb中的false到true,它在開發模式下也能正常工作,但是,這會使開發變得非常痛苦。有沒有像config.cache_classes = false這樣的配置設置,除非Rails.cache.fetch從緩存中獲取(如果可能的話)?

回答

31

嘗試將下面的/config/environments/development.rb

# Temporarily enable caching in development (COMMENT OUT WHEN DONE!) 
config.action_controller.perform_caching = true 

此外,如果你的緩存存儲配置爲/config/environments/production.rb,那麼你會需要複製相應的行到development.rb以及。例如,如果您的緩存存儲是Dalli memcache gem:

# copied from production.rb into development.rb for caching in development 
config.cache_store = :dalli_store, '127.0.0.1' 

希望有所幫助。

+9

只是一個獎金提示,除非ENV [「DEV_CACHE」]將測試配置放入其中,否則其中包含正常的非高速緩存配置。然後,無論何時想要在終端中啓用緩存,都可以編寫export DEV_CACHE =「ANYTHING」。最好的部分是,你不希望在不需要的時候啓用緩存。 – tehprofessor 2014-03-12 21:22:50

+1

此提示與解決方案一起超級有用。 – anbiniyar 2014-03-15 06:24:29