Я сейчас запускаю ручное кэширование и похоже, что вы можете использовать встроенный API плагина actionpack-page_caching , чтобы вручную запускать создание кэша страниц.Вам нужно использовать функцию cache_page(content, path, extension = nil, gzip = Zlib::BEST_COMPRESSION)
с атрибутами (посмотрите строку 80 на https://github.com/rails/actionpack-page_caching/blob/master/lib/action_controller/caching/pages.rb).. Здесь я сделал пример действия, которое выполняет итерацию по некоторой коллекции и создает кэш метода "show" для каждого элемента этой коллекции.
def precompile
@pages = Page.all
@pages.each do |page|
@page = page
cache_page(render_to_string(template: 'pages/show'), url_for(action: :show, id: @page, only_path: true))
end
redirect_to '/'
end
Часть моего кода url_for(action: :show, id: @page, only_path: true)
не очень чистая, но это первая версия кода, которая работает так, как мне нужно, любой рефакторинг приветствуется. Также этот код будет перезаписывать файл кэша каждыйвремя его запуска без проверки каких-либо изменений или истечения срока действия.