Domanda

Questo mi ha messo in difficoltà.

Ho una visione con un frammento cache:

 - cache :key=>"news" do    
   %h2 News
   - etc

Ho una spazzatrice che utilizza:

def expire_home_cache
  puts "expire_home_cache"
  expire_fragment(:key => "news") 
end

La spazzatrice è chiamato come posso vedere "expire_home_cache" in uscita della console.

Ma il frammento non è aggiornato ...

Tutte le idee?

È stato utile?

Soluzione

Si potrebbe provare questo:

   cache("news") do    
     %h2 News
     - etc
   end

e ...

def expire_home_cache
  puts "expire_home_cache"
  expire_fragment("news") 
end

... o provare questo ...

 - cache({:key=>"news"}) do    
   %h2 News
   - etc

Sto pensando il problema potrebbe essere che Ruby o Rails è un periodo difficile determinare ciò che la chiave è esattamente così e il metodo di cache e expire_fragment sta generando due differenti chiavi della cache.

Altri suggerimenti

Provare a sostituire expire_fragment(:key => "news") con ActionController::Base.new.expire_fragment(:key => "news")

Non c'è tempo per spiegare, ma ha funzionato per me.

Il modo corretto per farlo è:

cache :news do

  ...
end

E poi nel spazzatrice:

expire_fragment :news

Questo non risponde direttamente alla tua domanda, ma hai provato il plugin timed_fragment_cache come alternativa?

http://github.com/tricycle/timed_fragment_cache/tree/master

Ho trovato questo per essere un modo molto più semplice di scadenza frammenti nei miei progetti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top