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?
1
A
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
- 1. Pourquoi mes événements ne sont pas enregistrés après la publication?
- 2. Les constantes définies dans environment.rb disparaissent en mode développement
- 3. Pourquoi mes outils de développement IE8 ne fonctionnent-ils pas?
- 4. ActiveRecord requête
- 5. Rails Daemon reste en mode développement
- 6. Pourquoi ActiveRecord émet une requête distincte par jointure?
- 7. Pourquoi mes variables de session ne sont pas disponibles lors de la construction d'un contrôleur?
- 8. Pourquoi ai-je une erreur sur la première requête après le redémarrage d'une application Sinatra avec Rack et Phusion Passenger?
- 9. CruiseControl.rb exécute toujours mes projets en mode production?
- 10. ActiveRecord Sous-classe avec connexion DB manuelle impossible d'accéder directement aux variables de colonne
- 11. Pourquoi l'affectation à mes variables globales ne fonctionne-t-elle pas en Python?
- 12. variables de requête dans Grails
- 13. C# Variables de variables membres utilisées par la méthode de la classe de base
- 14. Problème avec mes variables de session dans asp.net 2.0
- 15. Problème de dépendances Rails en mode production
- 16. Chaque modification de mode de développement ajoute une autre instance de contrôleur de même classe?
- 17. VBScript - Je ne sais pas pourquoi mes arguments ne sont pas utilisés de la même manière que les variables
- 18. Quelle est la meilleure façon de stocker des variables de classe en PHP?
- 19. Pourquoi ne puis-je pas me connecter à mes événements d'objets COM après la création?
- 20. Comment forcer ActiveRecord à recharger une classe?
- 21. Réessayer la requête si la première a échoué
- 22. Pourquoi trouver (: last) échouer dans mes tests unitaires?
- 23. Pourquoi les rappels ActiveRecord requièrent-ils des variables d'instance ou des méthodes d'instance avec préfixe self?
- 24. Pourquoi syscall doit-il passer en mode noyau?
- 25. Comment puis-je obtenir l'identifiant de catégorie sélectionné après la première page en pagination?
- 26. Pourquoi la classe PngBitmapEncoder donne-t-elle un aspect granuleux à mes images?
- 27. Variables de classe thread-safe Ruby
- 28. Substitution de variables membres de classe en Python (Django/Satchmo)
- 29. Pourquoi les fenêtres de mes éléments de messagerie Outlook deviennent-elles inutilisables après la fermeture de l'application?
- 30. Comment améliorer mes compétences de développement de middleware?
http://stackoverflow.com/questions/746063/constants-set-in-environment-rb-disappear-in-development-mode devrait répondre à votre question. –
Sarah, 'config.to_prepare' est parfait car je voudrais toujours conserver la fonctionnalité que mon code d'exemple fournit pour les tests. Merci. –