2012-01-23 29 views
8

Usando Rails.cache.fetch, como a continuación se cachear incluso en mi entorno de desarrollo (con el almacenamiento en caché desactivada):Rails.cache.fetch almacenamiento en caché en el desarrollo

@boat_features = Rails.cache.fetch("boat_features", expires_in: 10.minutes) do 
    BoatFeature.all 
end 

Alguien ha funcionado en esto antes?

Respuesta

7

Eso es normal. Ese tipo de almacenamiento en caché no está desactivado en desarrollo. En una aplicación anterior donde esto era un problema, usamos el almacén de memoria y luego agregamos un middleware que hizo Rails.cache.clear después de cada solicitud.

Algo así como

config.middleware.use ClearCache 

en development.rb

y luego su middleware ClearCache debería ser algo como

class ClearCache 
    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    @app.call(env) 
    ensure 
    Rails.cache.clear 
    end 
end 

En Rails 3.2 también hay ActiveSupport::Cache::NullStore

+4

El nullstore se puede agregar a development.rb con config.cache_store = []: null_store – nasmorn

+0

@frederick - bastante seguro de que no es cierto - config/entornos /development.rb ha desactivado "perform_caching" de forma predeterminada –

+1

El almacenamiento en caché no está relacionado con Rails.cache.fetch –

6

tuve la el mismo problema. Trabajé mucho y luego se me ocurrió esta sencilla solución. En el archivo de configuración de desarrollo config/environments/development.rb añadir estos ajustes

config.perform_caching = false config.cache_store = :null_store

Cuestiones relacionadas