Est-ce que quelqu'un sait comment configurer les rails pour qu'ils ne mettent PAS en cache les classes incluses dans le dossier lib?Empêcher les rails 2/3 de la mise en cache de Lib/Classes
Répondre
Cela peut également être effectué en n'utilisant pas le répertoire lib/
, mais en stockant des classes ou des fichiers d'assistance dans le répertoire app/helpers
. De cette façon, ils seront rechargés pendant le temps de développement et mis en cache pendant le temps de production.
Par "mise en cache des classes", je suppose que vous voulez dire que les fichiers sources dans le répertoire de l'application sont automatiquement rechargés dans l'environnement de développement avant qu'une nouvelle requête ne soit traitée?
Ceci n'est pas lié à la mise en cache, le comportement normal de Ruby est de lire et d'analyser un fichier source une fois et plus jamais tant que le processus s'exécute. Rails (ActiveSupport :: Dependencies en fait) fournit un mécanisme pour recharger tout le code avant qu'une demande ne soit traitée. Dans l'environnement de développement, cela est utile car vous ne voulez pas redémarrer le serveur Web local pour chaque modification apportée au code. Dans un environnement de production, cela nuirait gravement aux performances et est donc désactivé.
Par défaut, les classes d'application sont marquées comme rechargeables. Vous pouvez marquer des classes arbitraires à être rechargées avant qu'une demande est traitée dans un environnement de développement en utilisant la méthode de classe unloadable
:
class MyClass
unloadable # mark this class as reloadable before a request is processed
# …
end
Prenez garde que chaque classe peut bien jouer avec le déchargement. Tant que vous définissez votre classe dans un fichier source trouvé et chargé par le mécanisme de chargement automatique de Rails, vous êtes probablement bon. Mais vous risquez de rencontrer des problèmes si vous rouvrez votre cours ailleurs afin de le monkeypatch car l'autoloading ne l'attrape pas.
- 1. Empêcher la mise en cache IE
- 2. Comment empêcher la mise en cache de requêtes asynchrones?
- 3. Comment empêcher la mise en cache de jQuery Ajax?
- 4. intervalle rails mise en cache
- 5. Empêcher la mise en cache d'images dans MVC 2 C#
- 6. Rails - Mise en cache ACL9 en session
- 7. SQLObject: Comment empêcher la mise en cache d'une classe spécifique?
- 8. Emacs 23: Sélection non mise en surbrillance
- 9. rails mise en cache pour application.rb
- 10. Empêcher Safari de mettre en cache les meilleurs sites
- 11. Rails DB Requêtes et Mise en cache les meilleures pratiques
- 12. Page Mise en cache dans les rails 3
- 13. Mise en cache des modèles dans les rails
- 14. Rails - mise en cache et vues basées sur les permissions
- 15. Page Mise en cache pour les rails 3
- 16. Mise en cache et conversion pendant la mise en cache
- 17. Rails: est ce problème de mise en cache
- 18. Mise en cache de page par domaine dans Rails
- 19. Rails mise en cache de page avec Apache et Capistrano
- 20. Empêcher l'exploration et la mise en cache de la page html par bot/crawler
- 21. Mise en cache à base de domaine Rails
- 22. Désactiver l'image de la mise en cache?
- 23. Comment puis-je empêcher la mise en cache de certaines de mes vues dans ASP.NET MVC?
- 24. Mise en cache de fragments avec Memcached
- 25. cache de page dans les rails
- 26. Mise en cache de la sessionfactory
- 27. GAE & mise en cache de réponse
- 28. C# Mise en cache de la dépendance du cache
- 29. Afficher les rapports SSRS dans SharePoint 2007 et empêcher la mise en cache
- 30. Mise en cache de WebConfigurationManager.AppSettings?
Pas exactement. Ce que je veux dire est que lorsque je charge une classe (en utilisant require et include) dans mon application. Ensuite, chaque fois que cette classe est utilisée sur une autre page ou une autre requête, alors les rails ne nécessitent PAS le fichier (charger le fichier) à nouveau, il utilise simplement la classe qui a été chargée auparavant (car elle reste en mémoire). Cela devient frustrant car j'ai besoin de recharger le serveur rails à chaque fois que je modifie la classe lib incluse. Je l'exécute en mode développement avec les classes de cache de configuration définies sur false. – matsko
Je vois. Le mécanisme de rechargement de Rails ne fonctionne probablement que si votre classe est couverte par le chargement automatique de Rails, et non si vous en avez besoin manuellement. Je suggère de laisser votre classe charger par Rails autoloading, ce qui est très pratique de toute façon (vous n'avez pas besoin de l'exiger et ça marche partout). Si ce n'est pas possible, vous pouvez essayer d'exploiter le chargement automatique de Rails en chargeant votre fichier de classe dans un fichier qui est couvert par le chargement automatique (mais assurez-vous d'utiliser #load, pas #require, car ne nécessite qu'une seule charge) – Zargony