2011-08-22 15 views
7

Tengo problemas para caducar un caché de acciones en mi aplicación.Caché de caducidad caducada con cache_path personalizado

Aquí está mi controlador:

class ToplistsController < ApplicationController 
    caches_action :songs, cache_path: :custom_cache_path.to_proc 

    def custom_cache_path 
    "#{params[:when]}-#{params[:what]}-#{params[:controller]}-#{params[:action]}" 
    end 

    def songs 
    # ... 
    end 
end 

alguna manera necesito para poder restablecer la ruta de caché personalizado, pero no puedo encontrar la manera.

Ya he intentado usar this technique, sin éxito. Parece que Dalli, que es mi motor de caché, no es compatible con regexp matcher.

estoy recibiendo este error al intentar utilizar este código:

expire_fragment(/songs/)

ActiveSupport::Cache::DalliStore does not support delete_matched

He tratado de utilizar esta línea de código, para la depuración, pero ha de ser ignorado.

before_filter only: [:songs] 
    expire_fragment(custom_cache_path) 
end 

Estoy usando Rails 3.1.0.rc6, Dalli 1.0.5 y Ruby 1.9.2.

+1

Usted usa una expresión regular con dallicache con esta joya: https://github.com/defconomicron/dalli-store-extensions –

+0

Lo intentaré, gracias. – Oleander

Respuesta

0

El bloque before_filter se ignoró duo a la memoria caché de acciones.
La solución es usar un fragmento de caché en su lugar.

# Controller 
class ToplistsController < ApplicationController 
    helper_method :custom_cache_path 

    before_filter only: [:songs] 
    if params[:reset_cache] 
     expire_fragment(custom_cache_path) 
    end 
    end 

    def custom_cache_path 
    "#{params[:when]}-#{params[:what]}-#{params[:controller]}-#{params[:action]}" 
    end 

    def songs 
    # ... 
    end 
end 

# View 

<%= cache custom_cache_path do %> 
    Content that should be cached 
<% end %> 
0

También es posible que desee comprobar hacia fuera la solución here. Con su enfoque, puede caducar acciones con parámetros adicionales.

Cuestiones relacionadas