sql >> データベース >  >> NoSQL >> MongoDB

OSXでのRSpecのロード時間は信じられないほど長い

    バンドラー

    私にとっては、バンドラーの読み込みの問題のようです。もう少し測定することをお勧めします。プロジェクトごとに1つのジェムセットを使用しますか、それともすべてを1つのジェムセットに保存しますか(何も使用しない場合はそうです)? 1つのディレクトリに多数のgemがある場合(つまり、すべてに1つのgemsetがある場合)、ジョブを実行するためにより多くのパスをトラバースする必要があるため、最終的にバンドラーの速度が大幅に低下します。

    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 <​​/ code> 非常に大きな値を報告します( 237があります そして、私にとってはすべてが正常に思えます)、インストールされたgemをプロジェクトごとに個別のgemsetに分割する必要があるかもしれません。

    timeでさらに測定を行います コマンド、 realを探します 値、それは合計です。

    まず、 bundled_rspecを削除します ラッパー、最新のRVM では必要ありません バージョン。

    次に、Bundlerを使用した場合と使用しない場合のrspecの読み込みを測定します。

    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が比較的小さいプロジェクトでも大きな数値が得られますが、これはバンドラーの問題です。

    レー​​ル

    次のボトルネックは通常、Rails自体です。 Railsをロードしない1つのテストを測定してみてください(つまり、 spec_helper だけです) )次に、レールを使用してテストします(つまり、 rails_helper を使用します) 。

    数字に大きな違いが見られるようになるとすぐに、どこに問題があるのか​​がわかります。

    Railsのパフォーマンスを改善するためのクイックフィックスソリューションとして、 springを使用します。 宝石 。 Rails 4.1以降を使用する場合、Springはすでに有効になっています。

    rspecに対してSpringを有効にするには Gemfileに追加します

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

    を実行します
    $ bundle install
    $ spring binstub --all
    

    最後のコマンドは、プロジェクトの binでSpringがサポートするすべてのバイナリのラッパーを生成します フォルダー(そこを見て、コミットすることを忘れないでください)。その後、 rspecを実行する必要があります bin / rspecを使用 。最初の実行はまだ遅いですが、Railsはすでにロードされているため、その後のすべての実行は十分に高速である必要があります。




    1. Azureで最速のMongoDB!

    2. PythonとRedis:マネージャー/ワーカーアプリケーションのベストプラクティス

    3. MongoDB C#ドライバーは接続を解放せず、エラーが発生します

    4. SpringデータMongoDbでネストされたVariableOperators.mapItemsOfを使用できません