Rails 3: кэширование * всех * страниц с контроллера без добавления их вручную - PullRequest
1 голос
/ 24 января 2012

У нас есть приложение Rails, в котором есть несколько страниц, которые доступны всем, и страницы, которые вы видите только после входа в систему.Мы называем их «общедоступными» страницами и страницами «приложений».Поскольку публичные страницы не меняются, мы хотим включить для них кэширование страниц.Одним из решений этого было бы ручное добавление

caches_page :index, ..

ко всем нашим публичным контроллерам.Однако я не считаю это удобным и рубиновым.Все наши публичные контроллеры наследуются от класса PublicController (некоторые общие методы, поведение, ..), поэтому я подумал о том, чтобы поместить метод кэширования также в PublicController, чтобы все публичные контроллеры кэшировались по умолчанию (опять же, публичные означает более или менее статическийсодержание).Однако в Rails не существует

caches_page :all

.Я подумал об использовании чего-то вроде

self.new.public_methods(false)

, а затем перебрал их и добавил в кеширование.Но так как это есть в PublicController, никакие фактические действия не перечислены.

У кого-нибудь есть хорошее решение этой проблемы?Или это ручной путь только .

Спасибо!

1 Ответ

3 голосов
/ 24 января 2012

Если посмотреть на то, как работает caches_page, похоже, что для этого можно добавить фильтр:

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