2012-01-23 16 views
8

Korzystanie Rails.cache.fetch jak poniżej jest buforowanie nawet w moim środowisku programistycznym (z buforowania wyłączony):Rails.cache.fetch buforowanie w rozwoju

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

ktoś napotkasz tego wcześniej?

Odpowiedz

7

To normalne. Tego rodzaju buforowanie nie jest wyłączone podczas programowania. W poprzedniej aplikacji, w której wystąpił ten problem, użyliśmy magazynu pamięci, a następnie dodaliśmy oprogramowanie pośrednie, które po każdym żądaniu było Rails.cache.clear.

Coś

config.middleware.use ClearCache 

w development.rb

i wówczas clearCache middleware powinna wyglądać

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

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

w Rails 3.2 jest również ActiveSupport::Cache::NullStore

+4

nullstore mogą być dodawane do development.rb z config.cache_store = [: null_store] – nasmorn

+0

@frederick - całkiem pewny, że nie jest to prawdą - config/Środowiska /development.rb ma "perform_caching" domyślnie wyłączony –

+1

Wykonaj buforowanie nie jest powiązane z Rails.cache.fetch –

6

miałem taki sam problem. Dużo pracowałem, a potem wymyśliłem to proste rozwiązanie. W pliku konfiguracyjnym rozwoju config/environments/development.rb dodać te ustawienia

config.perform_caching = false config.cache_store = :null_store