Использование memcached в приложении Rails с наследованием одной таблицы?

У меня есть приложение Rails, которое использует STI для обработки различных типов пользователей, таких как:

class Admin < User
  ...
end

Я хочу использовать memcached, но постоянно получаю ужасную ошибку «неизвестный класс/модуль». Я пытался предварительно загрузить все мои модели ActiveRecord, но безрезультатно. Первый запрос работает как обычно, но первый вытаскивает из memcached ошибки. Я следовал этим инструкциям, но безрезультатно.

Возможно ли использование memcached с наследованием одной таблицы?


person Matt Darby    schedule 14.01.2009    source источник


Ответы (3)


Я думаю, это связано с ленивой загрузкой классов. Когда вы вызываете его из memcached, определение класса не загружается, и тогда вы получаете сообщение об ошибке.

Обходной путь, который я использую:

Admin #lazily load the class definition

# do whatever that has cached Admins
person DanSingerman    schedule 14.01.2009

Проблема заключалась в том, что метод login_from_session restful_authentication загружался до запуска вышеупомянутого before_filter. Предварительная загрузка пользовательских классов STI в верхней части этого метода сработала.

person Matt Darby    schedule 14.01.2009

просто быстрый комментарий, я читал, что сейчас предпочтительнее использовать require_dependency 'admin', не знаю, почему

require_dependency 'region'

Кроме того, я обнаружил, что в этом нет необходимости, если вы добавите

config.cache_classes = true

к вашему production.rb (или development.rb для тестирования), это, кажется, ловит все модели для кэширования

person Brian Armstrong    schedule 23.06.2009