2009-08-10 3 views
1

J'ai une variable d'instance de classe sur l'une de mes classes AR. Je définis sa valeur au démarrage avec un initialiseur et, après cela, ne le touche plus jamais sauf pour en lire. En mode développement, cette valeur disparaît après la première requête au serveur Web. Cependant, lors de l'exécution de tests, de l'utilisation de la console ou de l'exécution du serveur de production, cela ne se produit pas. Y at-il quelque chose à propos du mode de développement qui nuke les variables d'instance des classes à chaque requête? Si oui, existe-t-il un moyen de désactiver cela pour des variables ou des classes spécifiques?Pourquoi mes variables d'instance de classe ActiveRecord disparaissent-elles après la première requête en mode développement?

+2

http://stackoverflow.com/questions/746063/constants-set-in-environment-rb-disappear-in-development-mode devrait répondre à votre question. –

+0

Sarah, 'config.to_prepare' est parfait car je voudrais toujours conserver la fonctionnalité que mon code d'exemple fournit pour les tests. Merci. –

Répondre

0

En mode développement, les classes ne sont pas mises en cache, ce qui signifie qu'elles sont toutes rechargées à chaque requête. En mode test et production, ils sont mis en cache, ce qui signifie que votre instance de classe varaibles suvives. Le paramètre de mise en cache est défini dans les fichiers appropriés dans config/environments. Une solution consiste à définir une variable globale ou d'environnement dans votre initialiseur, puis à définir votre accesseur de niveau classe pour renvoyer cette valeur.

Questions connexes