sql >> Databasteknik >  >> NoSQL >> MongoDB

RSpec laddningstid otroligt lång på OS X

Bundlare

Ser ut som ett problem med laddning av buntar för mig. Jag skulle rekommendera att göra några fler mätningar. Använder du 1 ädelsten per projekt eller lagrar du allt i 1 ädelsten (det är sant om du inte använder någon)? Om du har massor av ädelstenar i en katalog (dvs. 1 ädelsten för alla) kommer det så småningom att sakta ner paketeringen mycket, eftersom den behöver gå fler vägar för att göra sitt jobb.

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

Om gem list -q | wc -l rapporterar ett ganska stort värde (jag har 237 och allt verkar normalt för mig), kanske du behöver dela upp installerade ädelstenar i en separat ädelsten per projekt.

Gör några fler mätningar med time kommandot, leta efter real värde, det är totalsumman.

Ta först bort din bundled_rspec wrapper, det behövs inte med senaste RVM versioner.

Mät sedan din rspec-laddning med och utan 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`

Om time rspec -v ger dig stora siffror även för projekt med relativt liten Gemfile, det är ett paketeringsproblem.

Räls

Nästa flaskhals är vanligtvis Rails själv. Försök att mäta ett test som inte laddar Rails (dvs. bara spec_helper ) och testa sedan med rails (dvs med rails_helper ).

Så fort du börjar se stor skillnad i siffror kommer du att veta var du har ett problem.

Vår

Som en snabblösning för att förbättra rälsens prestanda är användningen av spring pärla . Om du använder Rails 4.1+ är fjädern redan aktiverad.

För att aktivera Spring för rspec lägg till i din Gemfile

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

och kör

$ bundle install
$ spring binstub --all

Det sista kommandot genererar omslag för alla fjäderstödda binärer i ditt projekts bin mapp (ta en titt där och glöm inte att binda dem). Efter det bör du köra rspec med bin/rspec . Första körningen kommer fortfarande att vara långsam, men alla efterföljande körningar bör vara tillräckligt snabba eftersom Rails redan kommer att vara laddade.




  1. Synkron funktion kräver nodejs mongodb drivrutin

  2. Hur man tvingar MongoDB pullAll att bortse från dokumentbeställning

  3. MongoDB count collection Node.js

  4. Vad är ett bättre tillvägagångssätt för att lagra och söka efter ett stort dataset med meteorologiska data