Подтвердить что ты не робот

Как я могу завершить кешированный фрагмент из консоли?

Что-то вроде

Rails.cache.delete('site_search_form')

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

Rails.cache.delete "views/site_search_form"

Ответ 4

В 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.