Где поместить инициализаторы кеша в Rails? - PullRequest
3 голосов
/ 20 февраля 2011

Я пытаюсь оптимизировать свое приложение и загружать определенные вещи в кеш Rails (в конце концов memcached) при запуске приложения.По сути, у меня есть несколько таблиц в моей базе данных, которые существуют только для целей нормализации и редко меняются.Когда они меняются, я могу обработать логику для обновления кеша.

Где мне написать 'инициализатор', чтобы прочитать эти различные модели и загрузить их в кеш?Я попытался написать традиционный инициализатор, но он запускается ДО того, как мои модели действительно существуют ... Мне нужно загрузить все мои модели и все остальное, затем создать кеш, а затем запустить приложение.Как я могу войти в это среднее состояние?

1 Ответ

1 голос
/ 20 февраля 2011

Я бы либо поместил этот код в файл в вашем каталоге lib и сначала запросил файлы модели, либо непосредственно в файлы вашей модели, чтобы инициализация выполнялась после определения вашей модели:

class NormalizedTable
  ...
end

CacheInitializer.fill_cache_with :normalized_table

Где CacheInitializer # fill_cache_with определен в ваших инициализаторах или каталоге lib. Я также рекомендовал бы запускать эти функции в фоновом режиме, например, в отложенном задании. Если вы выполняете этот код каждый раз, когда загружаете приложение Rails, это замедляет процесс загрузки, и, вероятно, нет необходимости, чтобы данные постоянно находились в вашем кеше, т. Е. Вы можете использовать базу данных во время заполнения кеша. .

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