Pengumpul
Sepertinya beberapa masalah pemuatan bundler untuk saya. Saya akan merekomendasikan untuk melakukan beberapa pengukuran lagi. Apakah Anda menggunakan 1 gemset per proyek atau menyimpan semuanya dalam 1 gemset (benar jika Anda tidak menggunakannya)? Jika Anda memiliki banyak permata dalam 1 direktori (yaitu 1 kumpulan permata untuk semua) pada akhirnya akan sangat memperlambat bundler, karena ia perlu melintasi lebih banyak jalur untuk menjalankan tugasnya.
bundle | wc -l # how many gems bundler uses in your current project
gem list -q | wc -l # how many gems in your gemset
Jika gem list -q | wc -l
melaporkan nilai yang cukup besar (saya punya 237
dan semuanya tampak normal bagi saya), mungkin Anda perlu membagi permata yang terpasang menjadi permata terpisah per proyek.
Lakukan pengukuran lagi dengan time
perintah, cari yang real
nilai, itu jumlah total.
Pertama, hapus bundled_rspec
Anda wrapper, itu tidak diperlukan dengan RVM terbaru
versi.
Kemudian ukur pemuatan rspec Anda dengan dan tanpa 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`
Jika time rspec -v
memberi Anda jumlah besar bahkan untuk proyek dengan Gemfile yang relatif kecil, ini adalah masalah bundler.
Rel
Hambatan berikutnya biasanya Rails itu sendiri. Coba ukur satu tes yang tidak memuat Rails (yaitu hanya spec_helper
) dan kemudian uji dengan Rails (yaitu dengan rails_helper
).
Segera setelah Anda mulai melihat perbedaan besar dalam jumlah, Anda akan tahu di mana Anda memiliki masalah.
Musim semi
Sebagai solusi perbaikan cepat untuk meningkatkan kinerja rel adalah penggunaan spring
permata
. Jika Anda menggunakan Rails 4.1+ Spring sudah diaktifkan.
Untuk mengaktifkan Spring untuk rspec
tambahkan ke Gemfile
gem 'spring-commands-rspec', group: :development
dan jalankan
$ bundle install
$ spring binstub --all
Perintah terakhir akan menghasilkan pembungkus untuk semua binari yang didukung pegas di bin
project proyek Anda folder (lihat di sana dan jangan lupa untuk mengkomitnya). Setelah itu Anda harus menjalankan rspec
dengan bin/rspec
. Jalankan pertama akan tetap lambat, tetapi semua lari berikutnya harus cukup cepat karena Rails sudah dimuat.