sql >> Database >  >> NoSQL >> MongoDB

RSpec laadtijd ongelooflijk lang op OS X

Bundelaar

Lijkt me een probleem met het laden van de bundel. Ik zou aanraden om wat meer metingen te doen. Gebruik je 1 edelsteenset per project of bewaar je alles in 1 edelsteenset (het is waar als je er geen gebruikt)? Als je veel edelstenen in 1 map hebt (d.w.z. 1 edelsteenset voor allemaal), zal het de bundel uiteindelijk veel vertragen, omdat het meer paden moet afleggen om zijn werk te doen.

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

Als gem list -q | wc -l meldt een vrij grote waarde (ik heb 237 en alles lijkt normaal voor mij), misschien moet je geïnstalleerde edelstenen per project in een aparte edelsteenset splitsen.

Doe nog wat metingen met time commando, zoek naar de real waarde, het is de totale som.

Verwijder eerst uw bundled_rspec wrapper, het is niet nodig met nieuwste RVM versies.

Meet vervolgens uw rspec-lading met en zonder 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`

Als time rspec -v geeft je grote aantallen, zelfs voor projecten met relatief kleine Gemfile, het is een bundelprobleem.

Sporen

Het volgende knelpunt is meestal Rails zelf. Probeer één test te meten die geen rails laadt (d.w.z. alleen spec_helper ) en test vervolgens met rails (d.w.z. met rails_helper ).

Zodra je grote verschillen in cijfers begint te zien, weet je waar je een probleem hebt.

Lente

Als een snelle oplossing om de prestaties van de rails te verbeteren, is het gebruik van spring juweeltje . Als u Rails 4.1+ gebruikt, is Spring al ingeschakeld.

Spring inschakelen voor rspec voeg toe aan je Gemfile

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

en voer

. uit
$ bundle install
$ spring binstub --all

De laatste opdracht genereert wrappers voor alle binaire bestanden die door de lente worden ondersteund in de bin van uw project map (kijk daar en vergeet ze niet vast te leggen). Daarna moet u rspec . uitvoeren met bin/rspec . De eerste run zal nog steeds langzaam zijn, maar alle daaropvolgende runs moeten snel genoeg zijn, aangezien Rails al geladen is.




  1. MongoDB-fout op mongo's:te veel positionele opties

  2. Hoe een Redis-publicatiebericht te ontvangen in Go

  3. Hoe krijg ik gegevens van Mongodb

  4. Spring Data MongoDB en allowDiskUse