Rails - кеш фрагмента не истекает - PullRequest
1 голос
/ 22 мая 2009

Это меня поставило в тупик.

У меня есть представление с кэшированным фрагментом:

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

У меня есть подметальная машина, которая использует:

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

Sweeper вызывается так, как я вижу «expire_home_cache» в выводе консоли.

Но фрагмент не обновляется ...

Есть идеи?

Ответы [ 4 ]

4 голосов
/ 29 мая 2009

Попробуйте заменить expire_fragment(:key => "news") на ActionController::Base.new.expire_fragment(:key => "news")

Нет времени объяснять, но у меня это сработало.

2 голосов
/ 22 мая 2009

Вы можете попробовать это:

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

и ...

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

... или попробуйте это ...

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

Я думаю, что проблема может заключаться в том, что ruby ​​или rails не могут определить, какой именно ключ, и поэтому метод cache и expire_fragment генерируют два разных ключа кэша.

1 голос
/ 27 июля 2009

Правильный способ сделать это:

cache :news do

  ...
end

А потом в вашей подметальной машине:

expire_fragment :news
0 голосов
/ 18 июля 2009

Это прямо не отвечает на ваш вопрос, но вы пробовали плагин timed_fragment_cache в качестве альтернативы?

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

Я обнаружил, что это намного более простой способ истечения фрагментов в моих проектах.

...