12
votes

Que puis-je faire pour accélérer le mode de développement des rails?

rails, le mode de développement est lent. Très, très lent. Je gère Vista, et je définis config.cache_classes = true dans Développement.rb ... Mais c'est toujours lent et je dois redémarrer le serveur après avoir changé mon code .

Mon collègue développe des rails sur un Mac et voit une lenteur similaire.

Mon temps de développement ralentit considérablement car il faut quelques minutes pour tester les modifications de code.

Est-ce aussi bon que le développement des rails obtient? Ou je manque quelque chose qui va le rendre rapide et ma vie heureuse?


10 commentaires

On dirait que vous venez de vous évacer de la vapeur ici par des rails de bashing. Je ne suis pas un utilisateur de rails, mais je ne vois pas non plus une question de questions significative réelle. Vous demandez-vous des problèmes d'évolutivité avec des rails? Demandez-vous des corrections possibles à cette lenteur que vous vivez?


Je ne frappe pas de rails. J'adore utiliser des rails pour de nombreuses raisons, c'est la vitesse du serveur en mode de développement ne pas être l'un d'entre eux. Ce n'est pas un problème d'évolutivité, c'est une question de vitesse de développement. En termes de facilité de codage, Rails m'a sauvé des tonnes de temps. Je voudrais économiser encore plus avec un serveur de devir plus rapide.


Est-ce qu'il court vite dans la production?


oui ça marche vite en production


@Blaenk Je sais que la performance est un point douloureux dans la communauté ROR, mais c'est un point douloureux pour une raison: c'est une critique légitime. Rien que l'OP a affiché même des approches à distance "évacuant la vapeur ici par des rails de bashing". La question significative est posée est: "Est-ce que je manque quelque chose qui le rendra jeûner?"


Merci, imagiste. Ce sont des technologies, pas les mères des peuples. Ne prenons pas de critique légitime personnellement.


Il y a quelque chose qui ne va pas avec votre configuration.


Veuillez fournir plus de détails. Est-ce juste le démarrage du serveur qui est lent ou est-il lent sur chaque demande apportée à l'application? Pouvez-vous donner une estimation approximative de "lent" en quelques secondes? L'application utilise-t-elle d'autres gemmes / plugins? Et si vous commencez par une application fraîche sur rails, est-ce lent?


Les applications fraîches Rails ne sont pas lentes. J'utilise le filtre Profanity Action-Mailer et Fu-Fu. Les demandes de page prennent un peu moins de 10 secondes. Le démarrage du serveur n'est pas lent (environ 10 secondes, qui va bien).


@BLAENK - La question n'a rien à voir avec la mise à l'échelle. Il parle de mode de développement.


11 Réponses :


0
votes

Je suppose que vos demandes prennent des secondes? (Sinon, vous n'auriez probablement pas remarqué). Cela a toujours été rapide pour moi. Surtout depuis que j'ai commencé à utiliser Sinatra au lieu des rails: D

Oh, et j'ai oublié de mentionner - j'avais l'habitude de lancer des rails localement, mais j'utilise actuellement un serveur Virtual Centos avec VMware. Les deux étaient rapides


4 commentaires

Har Har Har. Eh bien, je ne devrais pas avoir à expliquer, mais Sinatra n'est pas une option. Je suis déjà au fond de mon projet actuel. Est-ce amusant d'installer un plugin qui vous permet d'exécuter du code mis à jour (GASP) sans redémarrer le serveur DEV. oh snap :)


Je pense que VMware fait une version Windows, mais essentiellement, vous achetez / téléchargez un programme qui vous permet d'exécuter plusieurs OSES pratiquement. Par exemple, sur mon Mac, j'ai Windows et Centos (Linux) fonctionnant dans une machine virtuelle. Le logiciel vous permet de partager des dossiers afin que un dossier de votre machine soit miroir dans le système d'exploitation virtuel. Vous le configurez comme un serveur, et il a une adresse IP locale. Vous pouvez également taper cette adresse IP pour le frapper ou modifier le fichier d'hôtes pour créer un faux domaine. Par exemple, blog.local va à mon serveur virtuel.


Alors, définissez-vous des rails pour être en mode de production ou de développement lorsqu'il est sur ce serveur VMware?


Quel que soit votre choix :) Je l'aurais mis en mode de développement.



0
votes

i régler config.cache_classes = true dans le développement.rb. C'est toujours lent et je dois redémarrer le serveur après avoir changé mon code.

Vous ne devez pas utiliser ce cache dans le développement (surtout s'il reste lent lorsque vous l'utilisez). Avoir à redémarrer le serveur tout le temps vous ralentira encore plus.

Êtes-vous sûr que Ruby lui-même est lent? Pas par exemple un certain code d'accès à la base de données que vous exécutez? Est un simple "monde bonjour" démo également lent?

Et à quel point parlez-nous lentement? Temps de chargement de la page plus de 10 secondes?


1 commentaires

Les heures de chargement sont d'environ 8 secondes. DB Access n'est pas lent, car j'ai un serveur de test de test (non local) qui est connecté à la même dB. Pour votre premier point, c'est essentiellement un choix entre le moindre de deux maux.



-17
votes
Andrews-MacBook-Pro:Sites askegg$ rails test
Andrews-MacBook-Pro:Sites askegg$ cd test
Andrews-MacBook-Pro:test askegg$ ./script/generate model test
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/test.rb
      create  test/unit/test_test.rb
      create  test/fixtures/tests.yml
      create  db/migrate
      create  db/migrate/20090812005217_create_tests.rb
Andrews-MacBook-Pro:test askegg$ ./script/performance/benchmarker 1000000 Test.new
            user     system      total        real
#1     25.140000   0.200000  25.340000 ( 25.549605)
Hmmm.  25 seconds to instantiate 1 million objects in development mode on a macbook pro with 12 other programs loaded.  Seems OK to me.

4 commentaires

Donc, vous dites que je devrais apprécier le massif de la complexité des scènes, l'application Rails pour me donner une expérience de développement lisse et compter le temps de serveur de devir lente comme un petit côté d'un très bon compromis?


Pas du tout. Je démontre que les rails (au moins sur ma machine) ne sont pas lents du tout. Je viens de courir un autre test (en mode développement) sur un projet que j'ai récemment terminé - il charge 1 000 objets en 0,271 secondes. C'est un cri loin de vos 8 secondes heures de charge. Quelque chose ne va pas avec votre configuration, ce n'est donc pas vraiment un problème spécifique des rails.


OH - En outre, essayez de profiler les appels de méthode que vous faites pour voir où l'application pourrait ralentit. par exemple "./script/performance/profiler Page.First 1000"


Oui. "Page.First" n'était qu'un exemple de l'un de mes projets. J'ai un modèle de page dans un CMS très mince. Il suffit de le remplacer par votre propre code.



7
votes

Parlez-vous de:

  • Slowsess Démarrage de l'application (comme exécution de script / serveur)?

    Si c'est le démarrage du serveur, alors quel serveur utilisez-vous? De mon expérience, Webrick est plus lent que Mongrel est plus lent que mince. Le passager est vraiment le plus efficace pour le développement local (bien que je n'ai jamais essayé de le faire fonctionner sous Windows).


    • réponses de page lente de frapper le serveur de dev?

      Cela pourrait être des requêtes de base de données inefficaces, trop de calcul dans la vue qui pourrait être retravaillée, etc. S'il s'agit d'un bon fonctionnement dans la production, ce n'est probablement pas votre problème. Cependant, le serveur Web que vous exécutez fera une différence dans votre vitesse localement. Je pense que le même ordre de démarrage s'applique également à l'exécution.


      • Rake Tâches prenant pour toujours pour commencer?

        J'ai aussi eu cette question. Si vous avez un grand projet avec beaucoup de plugins (ce qui signifie beaucoup d'initialisation à courir), il peut prendre un certain temps pour augmenter l'environnement des rails. Il y a des choses qui vont probablement accélérer, mais il n'y a pas de balle d'argent. Assurez-vous de ne pas avoir de plug-ins installés que vous n'utilisez plus, regardez prudemment votre environnement et vos initialiseurs pour vous assurer qu'il est en bonne forme, etc.


        La ligne de fond étant, stipule "rails est lent dans le développement" ne vient pas vraiment identifier le problème. Si vous pouvez clarifier ce qui est lent, vous pouvez obtenir une aide spécifique pour accélérer. J'ai travaillé sur de nombreux projets assez importants qui ont souffert de problèmes de performance dans le développement ainsi que de la production. Je n'ai jamais eu une situation qui ne pouvait pas être améliorée si elle est adéquate. Identifier le problème et vous pouvez généralement diagnostiquer une meilleure solution pour accélérer les choses.


0 commentaires

27
votes

Le plugin Rails-dev-boost accélère le mode de développement des rails. J'avais le même problème, et ce plugin a fait ma demande très snappy (comparé à quelques secondes charge par page). Il fonctionnera à une vitesse similaire à la production!

http://github.com/thedarkone/rails -Dev-boost

pour l'installer: xxx


3 commentaires

Il suffit d'essayer ce plugin et ça a aidé beaucoup - génial, merci!


Ce gemme est génial !! J'étais trop frustré par le développement envisagé d'être plus lent avec l'application devenant plus grand plus plus grand. C'est comme un dieu envoyé un.


Exactement ce que je cherchais. Merci!!



2
votes

J'ai rencontré les mêmes problèmes. Mon application, en mode DEV, continue de rester plus lente et plus lente. Par exemple, je crée un nouveau contrôleur avec une nouvelle action: xxx

en mode DEV, cela prend entre 12-15 secondes à compléter (lors de la demande via FF et IE). J'utilise mon chantier (non groupé). Je suis sur un MacBook Pro.

en mode produit, cela prend environ 130 ms.

Il doit y avoir un moyen de savoir quels fichiers sont chargés par demande (profilage de base) afin que je puisse essayer de comprendre ce qui se passe et où le goulot d'étranglement est.

FF Firebug Net montre que la plupart du temps (11-14 secondes) sont dépensés en état d'attente.

console montre: xxx

.

Toutes idées?


2 commentaires

Je reçois aussi ce même problème. Dans Dev env, la rechargement du navigateur prend environ 15-20 secondes mais dans la console, il montre juste ~ 400ms. Cela devient une douleur énorme dans le cul. Et je ne l'ai pas encore trouvé la solution.


J'ai exactement la même expérience. C'était rapide la nuit dernière, je me suis réveillé ce matin et maintenant c'est lent. Exécution dscachetutil -flushache n'a pas aidé non plus.



3
votes

FASTER_REQUIRE

http://github.com/rdp/faster_require

pourrait aider

Vitche à la mine significativement sur Windows

aussi SPORK peut être utilisé avec JRUBY pour accélérer les tests d'unité

http://github.com/rdp/spork


0 commentaires

1
votes

Je suis arrivé à ce post essayant de comprendre pourquoi je voyais autant de temps entre les demandes en mode développement.

Je travaille sur une application de taille modeste - 4000 LOC, 113 classes - et le slumming sur une machine lente. Plus de 9 / 10ths du temps entre les demandes se produisent lors du chargement du code modèle.

de manière prévisible, config.cache_classes = véritable accélère considérablement.


1 commentaires

Yup, qui accélère énormément, mais l'inconvénient est chaque fois que je modifie un fichier spécifique, ce changement ne se déclenche pas en raison du réalité du drapeau mis en cache. Donc, je dois redémarrer l'application à chaque fois que le redémarrage du serveur prend environ 20-30 secondes.



0
votes

Réglage config.Cache_classes = true dans le développement.rb accélérera toujours les applications plus grandes en mode DEV. J'aime avoir cette ligne dans mon environnement de développement: xxx

puis vous pouvez démarrer votre serveur avec: xxx

lorsque vous voulez une réponse plus rapide temps et ne vous dérange pas que les classes ne se rechargent pas sur chaque demande.


0 commentaires

0
votes

Si vous utilisez des versions 3.0 ou 3.1 de rails, vous pouvez utiliser Recharge active pour accélérer la page Les temps de chargement précisément. Il a été roulé dans des rails 3.2.


0 commentaires

1
votes

le meilleure façon pour faire du développement plus rapide est l'installation GEM nommé actif_reload .

Pour installer ce gem , vous pouvez entrer la commande,

gem installation active_reload

Et, dans votre projet Rails Gemfile, ajoutez

gem 'active_reload'

Ensuite, redémarrez votre serveur et vous trouverez le mode de développement beaucoup plus rapidement qu'il n'était l'habitude d'être.


0 commentaires