Pregunta

Éste me ha dejado perplejos.

Tengo una vista con un fragmento en caché:

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

Tengo una barredora que utiliza:

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

La barredora se llama como puedo ver "expire_home_cache" en la salida de la consola.

Sin embargo, el fragmento no se actualiza ...

¿Alguna idea?

¿Fue útil?

Solución

Es posible que intente lo siguiente:

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

y ...

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

... o probar este ...

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

Me refiero al problema puede ser que rubí o rieles está teniendo un tiempo difícil determinar cuál es la clave es exactamente lo que el método de caché y expire_fragment están generando dos claves de caché diferentes.

Otros consejos

Trate de reemplazar expire_fragment(:key => "news") con ActionController::Base.new.expire_fragment(:key => "news")

No hay tiempo para explicar, pero funcionó para mí.

La forma correcta de hacerlo es:

cache :news do

  ...
end

Y luego, en su barredora:

expire_fragment :news

Esto no responde directamente a su pregunta, pero ¿ha probado el plugin de timed_fragment_cache como alternativa?

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

He encontrado que esto es una manera mucho más simple de expirar fragmentos en mis proyectos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top