MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

RSpec-Ladezeit unter OS X unglaublich lang

Bündelung

Sieht für mich nach einem Ladeproblem des Bundlers aus. Ich würde empfehlen, noch ein paar Messungen zu machen. Verwenden Sie 1 Gemset pro Projekt oder speichern Sie alles in 1 Gemset (es stimmt, wenn Sie keines verwenden)? Wenn Sie viele Gems in einem Verzeichnis haben (d. h. 1 Gemset für alle), wird es den Bundler letztendlich stark verlangsamen, da er mehr Pfade durchlaufen muss, um seine Arbeit zu erledigen.

bundle | wc -l # how many gems bundler uses in your current project
gem list -q | wc -l # how many gems in your gemset 

Wenn gem list -q | wc -l meldet einen ziemlich großen Wert (ich habe 237 und für mich scheint alles normal zu sein), müssen Sie möglicherweise installierte Gems in ein separates Gemset pro Projekt aufteilen.

Führen Sie weitere Messungen mit time durch Befehl, suchen Sie nach dem real Wert, es ist die Gesamtsumme.

Entfernen Sie zuerst Ihre bundled_rspec Wrapper, wird mit neuesten RVM nicht benötigt Versionen.

Messen Sie dann Ihre Rspec-Belastung mit und ohne Bundler:

time rspec -v # with implicit bundler loading, rubygems-bundler gem is in use
time NOEXEC_DISABLE=1 rspec -v # without bundler, disable rubygems-bundler gem for this call`

Wenn time rspec -v gibt Ihnen selbst für Projekte mit relativ kleinen Gemfiles große Zahlen, das ist ein Bundler-Problem.

Schienen

Der nächste Engpass ist normalerweise Rails selbst. Versuchen Sie, einen Test zu messen, der Rails nicht lädt (d. h. nur spec_helper ) und dann mit Rails testen (also mit rails_helper ).

Sobald Sie anfangen, große Unterschiede in den Zahlen zu sehen, werden Sie wissen, wo Sie ein Problem haben.

Frühling

Als schnelle Lösung zur Verbesserung der Rail-Performance ist die Verwendung von spring Schmuckstück . Wenn Sie Rails 4.1+ verwenden, ist Spring bereits aktiviert.

Um Spring für rspec zu aktivieren zu Ihrem Gemfile hinzufügen

gem 'spring-commands-rspec', group: :development

und führen Sie

aus
$ bundle install
$ spring binstub --all

Der letzte Befehl generiert Wrapper für alle von Spring unterstützten Binärdateien im bin Ihres Projekts Ordner (sehen Sie dort nach und vergessen Sie nicht, sie zu übertragen). Danach sollten Sie rspec ausführen mit bin/rspec . Der erste Lauf wird immer noch langsam sein, aber alle nachfolgenden Läufe sollten schnell genug sein, da Rails bereits geladen ist.