2009-07-17 5 views
1

Lors du développement d'une application Rails, je laisse généralement le serveur dev en cours d'exécution localement (mongrel) que je travaille sur le code. Les modifications du code prennent effet après une actualisation rapide. SAUF les modifications n'ont pas été appliquées pour un cours que j'ai écrit dans le dossier Lib. Est-ce que c'est en quelque sorte un problème connu? Qu'est-ce qui peut causer cela? Il est très frustrant de travailler sur un problème pendant un certain temps, sans solutions, pour découvrir qu'aucune de ces solutions n'a même eu l'occasion de fonctionner.Rails pas rafraîchissant code

Merci pour toute aide.

Répondre

1

J'ai trouvé qu'il y a quelques dossiers que le serveur de développement de Rails (j'utilise WEBrick) ne scanne pas automatiquement pour des changements. Le dossier vendor/plugins est celui que je connais avec certitude, mais je me rappelle avoir du mal à modifier des choses dans le dossier lib.

Fondamentalement, chaque fois que je modifie quelque chose en dehors de l'application, je redémarre le serveur dev.

+0

merci. existe-t-il des solutions de contournement connues autres que le redémarrage du serveur à chaque fois? – user94154

+0

Pas que j'ai remarqué. Il me semble que les serveurs de développement des rails ne regardent que le dossier de l'application pour que les modifications soient rechargées à la volée. Peut-être qu'il y a une config ou quelque chose que vous pourriez changer pour Mongrel, mais je ne connais pas Mongrel. –

0

En code d'application PHP est rechargé à chaque demande, c'est pourquoi vous avez besoin de quelque chose comme APC pour le rendre rapide. Rails a un modèle différent, l'application est démarrée une fois et peut gérer plusieurs requêtes.

Rails possède une fonction spéciale permettant de recharger les fichiers modifiés, mais uniquement dans quelques répertoires. De plus, il ne gérera pas les changements de code invoqués au démarrage (comme environment.rb ou plugins). Dans ce cas, vous devez redémarrer le serveur.

La fonction de rechargement de la classe est activée par défaut dans l'environnement de développement par l'option de configuration suivante

config.cache_classes = false 
Questions connexes