Usando memcached em Rails app com Herança de Tabela Única?
-
22-07-2019 - |
Pergunta
Eu tenho um aplicativo Rails que usa STI para lidar com diferentes tipos de usuários, tais como:
class Admin < User
...
end
Eu quero usar memcached, mas eu continuo recebendo o erro temido "classe desconhecida / módulo". Eu tentei pré-carregamento todas dos meus modelos ActiveRecord sem sucesso. O primeiro pedido funciona como normal, mas a primeira puxada de erros memcached fora. Eu segui estas instruções sem sucesso também.
está usando memcached possível com herança única tabela?
Solução
Eu acho que isso é devido a preguiçoso carregamento das classes. Quando você chamá-lo de memcached a definição de classe não está carregado, e então você começa o erro.
O uso solução I é:
Admin #lazily load the class definition
# do whatever that has cached Admins
Outras dicas
O problema era que o método de login_from_session restful_authentication estava a ser carregado antes do before_filter acima mencionado foi executado. Pré-carregar as classes de usuário STI no topo deste método funcionou.
apenas um rápido comentário, eu li que usando require_dependency 'admin' é o preferido agora, não sei porquê
require_dependency 'region'
Além disso, descobri que isso é desnecessário se você adicionar
config.cache_classes = true
para o seu production.rb (ou development.rb para teste), este parece pegar todos os modelos de cache