बंडलर
ऐसा लगता है कि मेरे लिए कुछ बंडलर लोडिंग समस्या है। मैं कुछ और माप करने की सलाह दूंगा। क्या आप प्रति प्रोजेक्ट 1 रत्न का उपयोग करते हैं या 1 रत्न में सब कुछ संग्रहीत करते हैं (यह सच है यदि आप किसी का उपयोग नहीं करते हैं)? यदि आपके पास 1 निर्देशिका (यानी सभी के लिए 1 रत्न) में बहुत सारे रत्न हैं, तो यह अंततः बंडलर को बहुत धीमा कर देगा, क्योंकि इसे अपना काम करने के लिए और अधिक पथों को पार करने की आवश्यकता है।
bundle | wc -l # how many gems bundler uses in your current project
gem list -q | wc -l # how many gems in your gemset
अगर gem list -q | wc -l
काफी बड़े मूल्य की रिपोर्ट करता है (मेरे पास 237
. है और मेरे लिए सब कुछ सामान्य लगता है), हो सकता है कि आपको स्थापित रत्नों को प्रति प्रोजेक्ट एक अलग रत्न में विभाजित करने की आवश्यकता हो।
time
. के साथ कुछ और माप करें कमांड, real
के लिए देखें मान, यह कुल योग है।
सबसे पहले, अपना bundled_rspec
निकालें रैपर, इसकी आवश्यकता नहीं है नवीनतम RVM
संस्करण।
फिर बंडलर के साथ और उसके बिना अपने आरएसपीईसी लोडिंग को मापें:
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`
अगर time rspec -v
अपेक्षाकृत छोटे Gemfile वाले प्रोजेक्ट के लिए भी आपको बड़ी संख्या देता है, यह एक बंडलर समस्या है।
रेल
अगली बाधा आमतौर पर रेल ही होती है। एक परीक्षण को मापने का प्रयास करें जो रेल लोड नहीं करता है (यानी केवल spec_helper
) और फिर रेल के साथ परीक्षण करें (यानी rails_helper
. के साथ )।
जैसे ही आप संख्याओं में बड़ा अंतर देखना शुरू करेंगे, आपको पता चल जाएगा कि आपको कहां समस्या है।
वसंत
रेल के प्रदर्शन में सुधार के लिए एक त्वरित समाधान के रूप में spring
का उपयोग किया जाता है। मणि
. यदि आप रेल का उपयोग करते हैं तो 4.1+ स्प्रिंग पहले से ही सक्षम है।
rspec
. के लिए स्प्रिंग को सक्षम करने के लिए अपने Gemfile
में जोड़ें
gem 'spring-commands-rspec', group: :development
और चलाएं
$ bundle install
$ spring binstub --all
अंतिम आदेश आपके प्रोजेक्ट के bin
. में सभी स्प्रिंग समर्थित बायनेरिज़ के लिए रैपर जेनरेट करेगा फ़ोल्डर (वहां एक नज़र डालें और उन्हें प्रतिबद्ध करना न भूलें)। उसके बाद आपको rspec
चलाना चाहिए bin/rspec
. के साथ . पहला रन अभी भी धीमा होगा, लेकिन सभी परिणामी रन काफी तेज होने चाहिए क्योंकि रेल पहले ही लोड हो चुकी होगी।