Après avoir ajouté Sprockets, Rails se charge très lentement en mode développement, que dois-je faire pour l'accélérer ?
Réponses
Trop de publicités?Jetez un coup d'œil à https://github.com/wavii/rails-dev-tweaks .
Rails exécute tous les hooks to_prepare sur chaque demande de ressource Sprockets en mode développement. Cela inclut des choses comme le (re)chargement automatique de votre code, et diverses gemmes qui travaillent furtivement là-dedans aussi.
rails-dev-tweaks désactive to_prepare & reloading sur toute requête d'actif (et quelques autres -) lire la première partie de son README ). Cela accélère considérablement votre environnement de développement pour tout projet de taille raisonnable. Il est également configurable pour faire cela pour toutes les demandes supplémentaires que vous souhaitez.
Après avoir consulté plusieurs résultats de Google concernant ce problème, j'ai trouvé où se situe le problème de DNS.
Le problème est que : Rails fait des recherches inversées. Donc, si vous faites une requête à partir d'une IP directe, ou d'un nom d'hôte dans le /etc/hosts de la seule machine avec le navigateur, ce qui m'arrive souvent parce que je fais tout tourner dans des VM ensemble, et que cette IP ne se résout pas rapidement dans le serveur de développement, Rails attendra, pour chaque requête.
La morale de l'histoire ? Incluez une entrée dans /etc/hosts pour chaque IP liée à votre développement sur le serveur de développement (c'est-à-dire le serveur qui exécute rails). Cela signifie qu'il faut aller de l'avant et faire une entrée hosts pour chaque fausse/virtuelle/etc.... sur le serveur de développement que vous pensez être impliqué dans les tests de rails, car lorsqu'il enregistrera les requêtes et autres, il effectuera une recherche inverse, et vous voulez que cela soit rapide.
Une solution bizarre qui a fonctionné pour moi. Je naviguais normalement vers mon application sur le développement via myapp.local:3000, qui était défini dans mon fichier hosts. Le chargement des actifs était ridiculement lent.
En naviguant vers mon application via 127.0.0.1:3000, les ressources se sont chargées rapidement. De plus, après avoir utilisé l'IP locale une fois, j'ai pu naviguer en utilisant myapp.local:3000 et les ressources se sont chargées très rapidement.
J'aimerais pouvoir vous dire pourquoi, mais j'espère que ça aidera quelqu'un d'autre. Je suis sous OSX 10.7.5.
Avez-vous regardé à quelle vitesse il fonctionne en production ? L'environnement de développement se comporte différemment de l'environnement de test et de production, ce qui entraîne des pertes de performances plus importantes. Sans plus d'informations, nous ne pouvons pas vous donner une meilleure réponse.
Découvrez également les Turbo Sprokets ici - https://github.com/ndbroadbent/turbo-sprockets-rails3
C'est prometteur.