Как мне истечь время просмотра кэшированного фрагмента из консоли? - PullRequest
18 голосов
/ 16 апреля 2009

Что-то вроде

Rails.cache.delete('site_search_form')

не похоже на работу. Это возможно? Спасибо.

Ответы [ 4 ]

55 голосов
/ 08 мая 2009

ActionController :: Base.new.expire_fragment (ключ)

6 голосов
/ 16 апреля 2009

Записи фрагментов кэша создаются с ключом, немного отличающимся от того, к которому вы обращаетесь с Rails.cache.

Вместо этого используйте expire_fragment (вы можете отправить его на контроллер): http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html#M000438

2 голосов
/ 14 июня 2014
Rails.cache.delete "views/site_search_form"
0 голосов
/ 26 мая 2017

В Rails 5 я предпринял следующие шаги, чтобы разрушить кеш, не прибегая к skip_digest: true. Наша проблема заключалась в том, что изменение значения строк I18n не отражается в вычисленном дайджесте кэша, поэтому кэш не будет автоматически отключен.

Вот вид, где определен блок кеша:

/ views/layouts/_footer.html.slim
- cache :footer do
  span= t('shared.footer')

Затем в консоли rails запускаю:

fragment = ActionController::Base.new.view_context.cache_fragment_name(:footer, virtual_path: 'layouts/_footer.html.slim')
ActionController::Base.new.expire_fragment(fragment)

cache_fragment_name определит дайджест на основе ключевого аргумента virtual_path.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...