Rails 3 Expire сложных действий - PullRequest
1 голос
/ 19 мая 2011

Допустим, у меня есть это в моем контроллере:

caches_action :my_action, :cache_path => Proc.new { |c| "my_action##{c.params}" }

Где URL-адрес что-то вроде:

/w/:some_id/:additional_params

Кэширование работает просто отлично, но я не могу найти, как его истечь.

Я пробовал:

expire_action(:controller => '/my_controller', :action => 'my_action')

expire_fragment(/my_action/)

store = ActionController::Base.cache_store
store.delete_matched(/my_action/)

Но ни один не истекает мое действие. Любая идея, если возможно истечь соответствующее действие, как это?

1 Ответ

1 голос
/ 19 мая 2011

Из комментариев на Кэширование документов вы можете добавить :expires_in параметр:

caches_action :my_action, :expires_in => 1.hour,
  :cache_path => Proc.new { |c| "my_action##{c.params}" }

Также, как вы указали, ваши URL-адреса имеют вид /w/:some_id/:additional_paramsпоэтому в URL нет my_action.Таким образом, вы не будете сопоставлять никакие объекты с регулярным выражением /my_action/.

Возможно, это приведет к истечению срока действия кэша:

expire_fragment(%r{/w/\d+/})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...