2009-05-22 7 views
1

이 하나가 저를 곤혹스럽게합니다. I 콘솔 출력 "expire_home_cache"를 볼 수레일 - 조각 캐시가 만료되지 않습니다

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

스위퍼가 호출 : I 사용 스위퍼가

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

:

난 캐시 단편 뷰를 갖는다.

그러나 조각이 업데이트되지 않았습니다 ...

아이디어가 있으십니까? 나는 될 수있는 문제를 생각하고 ...

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

을 ...

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

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

와 ... 또는이 시도 :

답변

2

이 작업을 시도 할 수 있습니다 루비 나 레일즈가 키가 정확히 무엇인지 결정하기가 힘들어서 캐시 메쏘드와 expire_fragment가 두 개의 다른 캐쉬를 생성하고있다. ys. ActionController::Base.new.expire_fragment(:key => "news")

없음 시간 expire_fragment(:key => "news")를 교체

+0

당신은 또한'캐시 ("뉴스"를 수행해야 할 수도 있습니다, skip_digest : true)'. – Kris

4

봅니다 설명하는,하지만 나를 위해 일했다.

+0

소원 나는 이것을 더 upvote 수 ... 매력처럼 일했다! – concept47

+0

위의 작업을 수행하려면 --- cache_sweeper : whatever_sweeper ---를 application_controller.rb에 넣어야합니다. – concept47

+0

나는이 대답을 시도 할 때까지 스위퍼가 자식 연결을 위해 캐시를 만료하기를 거부하는 설명 할 수없는 인스턴스를 갖고있었습니다. 나는 왜 그런지 이해하지 못한다. sweeper 콜백은 expire_fragment 코드와 마찬가지로 호출되었습니다. 이상한. – twmills

1

이 작업을 수행하는 적절한 방법은 다음과 같습니다

cache :news do 

    ... 
end 

다음 스위퍼에 : 레일 4.x의에서

expire_fragment :news 
+0

그래서 열쇠는 문자열이 아니라 기호 여야합니까? –

+0

문자열이나 심볼로 만들 수 있지만 해시 일 필요는 없습니다. –

관련 문제