Кеширование действий не работает - PullRequest
0 голосов
/ 21 июня 2009

Я извлекаю и манипулирую XML из твиттера и flickr в моем приложении rails. Результаты появляются на каждой странице, и анализ выполняется в Application Controller с помощью Hpricot и open-uri.

Это мой первый эксперимент с кэшированием действий, и он, похоже, не работает. Я в режиме разработки с использованием WEBRick. Все подходящее установлено в true .rb.

Вот что в контроллере:

  before_filter :twitter, :flickr
  caches_action :twitter, :flickr

Ничего не отображается в / tmp / cache, и ясно, что Hpricot делает это при каждой загрузке страницы.

Заранее спасибо.

1 Ответ

2 голосов
/ 21 июня 2009

Кеш-память по умолчанию - это память для действий и кеширования фрагментов, поэтому в tmp / cache ничего не появится. Вы можете изменить это на file_store для целей отладки.

Я бы порекомендовал gem установить mongrel и использовать его вместо webrick в режиме разработки. Это быстрее и дает лучшую информацию с первого взгляда, чем webrick.

Когда действия кэшируются, все до того, как фильтры все еще будут работать.

Похоже, вы выполняете действия в твиттере и flickr как простые старые методы в before_filter. Это не будет вызывать кеширование. Вы должны посмотреть на кэширование фрагментов и изменить свой контроллер на:

class SomeController
  before_filter :twitter, :flickr

  protected
  def twitter
    unless read_fragment('twitter')
      ... do stuff ...
    end
  end
end

#_twitter.erb
<% cache('twitter') do %>
  render the relevant stuff
<% end %>
...