Как я могу завершить кешированный фрагмент из консоли?
Что-то вроде
Rails.cache.delete('site_search_form')
похоже, не работает. Это возможно? Спасибо.
Ответы
Ответ 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
.