2011-08-22 12 views
7

Mam problem z wygaśnięciem pamięci podręcznej operacji w mojej aplikacji.Wygasanie pamięci podręcznej operacji z niestandardową ścieżką pamięci podręcznej

Oto mój kontroler:

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 

jakoś muszą być w stanie zresetować ścieżkę zwyczaj cache, ale nie mogę dowiedzieć się, jak to zrobić.

Próbowałem już używać this technique, bez powodzenia. Wygląda na to, że Dalli, który jest moim silnikiem pamięci podręcznej, nie obsługuje interpretera regexp.

dostaję ten błąd, gdy próbuje użyć tego kodu:

expire_fragment(/songs/)

ActiveSupport::Cache::DalliStore does not support delete_matched

Próbowałem korzystać z tej linii kodu, do debugowania, ale to są ignorowane.

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

Używam Rails 3.1.0.rc6, Dalli 1.0.5 i Ruby 1.9.2.

+1

Używasz regex z dallicache z tym klejnotem: https://github.com/defconomicron/dalli-store-extensions –

+0

Spróbuję, dzięki. – Oleander

Odpowiedz

0

Blok before_filter został zignorowany do pamięci podręcznej akcji.
Rozwiązaniem jest użycie pamięci podręcznej fragmentów.

# 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

Możesz również sprawdzić rozwiązanie here. Dzięki jego podejściu możesz wygasić działania z dodatkowymi parametrami.

Powiązane problemy