2011-04-12 8 views
16

En el desarrollo, la (simplificado) declaración después siempre registra un fallo de caché, en la producción funciona como se esperaba:Rails3 - El almacenamiento en caché en modo de desarrollo con Rails.cache.fetch

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

Si cambio config.cache_classes de falso a verdadero en config/development.rb, funciona también en modo de desarrollo, sin embargo, esto hace que el desarrollo sea bastante doloroso. ¿Hay alguna configuración que sea como config.cache_classes = false, excepto que Rails.cache.fetch está obteniendo de la memoria caché si es posible?

Respuesta

31

Trate de colocar el siguiente en /config/environments/development.rb:

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

Además, si la configuración de almacenamiento en caché está en /config/environments/production.rb, entonces se necesita copiar la línea apropiada en development.rb también. Por ejemplo, si su almacén de caché es la joya Dalli Memcache:

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

Espero que ayude.

+9

Solo una sugerencia adicional, agregue una a menos que ENV ["DEV_CACHE"] coloque la configuración de prueba en ella, con otra que tenga la configuración normal que no sea de caché. Luego, cuando quiera habilitar el almacenamiento en caché en su terminal, puede escribir exportar DEV_CACHE = "ALGO". La mejor parte es que es mucho menos probable que accidentalmente haya habilitado el almacenamiento en caché cuando no lo desea. – tehprofessor

+1

Este consejo es muy útil junto con la solución. – anbiniyar

Cuestiones relacionadas