Railsアプリケーションのrspecテストを実行するときは、実際にテストを実行する前に、永久に1日かかることになります。なぜrspecは遅いのですか? Railsの初期ロードを高速化する方法や、必要なRailsアプリケーションの一部(ActiveRecordのものなど)をいくつかテストするためにすべてがロードされないようにする方法はありますか?RSpecがRailsで遅いのはなぜですか?
答えて
別の端末ウィンドウでscript/spec_server
を実行し、次に-X
パラメータをスペックコールに追加することで、script/spec
コールをスピードアップできるはずです。
これをRailsで実行していますか?もしそうなら、それは遅いRSpecの初期化ではなく、それはRailsです。 Railsは、仕様を実行する前に、コードベースとユーザのを初期化する必要があります。さて、にはがありますが、それはありません。 RSpecは、私の小さなノンレールプロジェクトの下で私のためにかなり速く走ります。
おかげレール。私はRails特有の問題を明確にしました。 –
それでは、そのレール、rspecではなく、確かにあなたを遅くしています。 –
レール環境全体がロードされなければならない(スクリプト/コンソールを試してください)ので、すべてのテストを実行できるので、テストの実行は非常に遅くなる可能性があります。 autotestを使用して、環境をロードしたままにして、編集するファイルを確認してください。ファイルを編集して保存すると、それに依存するテストだけが自動的かつ迅速に実行されます。
Macを使用している場合は、autotestよりも変更されたファイルのポーリングに必要なリソースが大幅に少なくなるため、Rspactor over autotestを使用することをおすすめします。フルココアバージョン
またはこれらは、個々のRSpecのテストをスピードアップしませんが、私はGithub
sudo gem install pelle-rspactor
で維持宝石のバージョンの両方があり、彼らははるかに速く感じる彼らの自動車など影響を受けるスペックを1秒以内に実行してください。
のアイデアがありますが、リンクの更新が必要で最新のrspecでは動作しません。 –
mislavsバージョンを使用することをおすすめします。 sudo gem install mislav-rspactor – Pelle
Windows環境の場合、RailsがWindowsの起動時に非常にゆっくりと表示されるため、おそらくほとんどできません。私はWindowsで同じ経験をしていて、セットアップをLinux VMに移して、それを本当にジッピーにしなければなりませんでした(私はオートテストも使用していました)。
+1。私はLinux上でRailsとRSpecを実行し、非常に強力なマシンではあるものの、遅さの苦情はありません。私の同僚は、同じハードウェア上でWindowsを使用しています.Rails環境をロードするまでには1分ほどかかる場合があります。 –
なぜrspecが遅いのですか?は、すべての環境、負荷器具、すべてのジャズを読み込むためです。
Railsの初期ロードを高速化する方法はありますかデータベースに依存するのではなく模擬を試すことができますが、これは実際にユニットテストには適しており、ユニットテストのスピードアップは間違いありません。 @Marc-Andre Lafortune
により、助けることができる@Scott Matthewmanによってmentionned zentestからの自動テストと同じmentionnedとしてAdditionnaly私が必要私のRailsアプリの一部(例えばActiveRecordのもののみ)ので、を選び出すする方法はありスペックサーバーを使用してそれはいくつかのテストを実行するために絶対にすべてを読み込まない?何
rake test:recent
これについて私はRSpecのタスクはこれを統合する方法を確認していないが、あなたは間違いなく、テスト使用することができます場合はRSpecのテストで同じことを行うためのテンプレートとして、最近のタスクを。それはすべてのenvironement、負荷器具すべてがジャズをロードするため
rake test:rspec:recent
まだ
ruby用の新しい自動テストツールがあります:Infinity test @ http://github.com/tomas-stefano/infinity_test – Jean
@Scottあなたは何をしていますか、なぜですか? – rogerdpack
存在しません。
rake spec
,it runs the db:test:prepare
taskを使用して実行した場合の本当の原因は次のとおりです。
このタスクは、テストデータベース全体を削除し、ゼロから再作成します。これは私にとってばかげているようですが、それは何ですか(同じことはrake:test:units
などを実行すると起こります)。
rspecがrspec gemの一部としてインストールするspec
アプリケーションを使用して簡単に回避できます。このよう
:
cd railsapp
spec speC# run all specs without rebuilding the whole damn database
spec spec/models # run model specs only
cd spec
spec controllers/user* # run specs for controllers that start with user
DBをドロップして再作成すると、フィクスチャからのデータが正しくロードされ、以前の実行で変更が残っていないことが保証されます。ランニングスペックはそれを保証するものではありません。あなたがdbに依存するつもりなら、最初からそれを作り直す必要があります。 – Jean
私は、あなたが探している「禅」の経験はあなたがファイルを保存するとき、結果はほぼ瞬時のテストであることと、バックグラウンドでspec_server
とautospec
を実行することだと思います。
しかし、私はこれらの2つのプログラムが通信するのに問題があります。
私が説明hereが見つかりました:
私は自動テストがspec_serverにコマンドを送信しないことに気付きました。 代わりに、実行するたびにRails環境全体とアプリケーションの プラグインがリロードされます。これにより、 がスクリプトサーバーよりもかなり遅く実行されます。 script/specコマンドを実行すると、スペックはが既に起動して実行準備ができているspec_serverに送信されるためです。 新しいプラグインなどをインストールすると、 はspec_serverを再起動する必要があります。
ただし、この問題をどのように修正しますか?私はZenTestをダウンロードし、autotest
プログラムのコードを変更することになると思っていますが、今すぐ試用する時間はありません。
rspec-rails-1.2.7から、spec_serverはspork gemのために推奨されなくなりました。
主な理由は、何らかの理由で、いつもが必要です。窓にはが必要です。
スピードアップのヒント: sporkがウィンドウズで動作するようになりました。
あなたは場所をキャッシュする "faster_require" 試すことができます。
http://github.com/rdp/faster_require
GL。 -rp
私は間違いなくスポークをチェックすることをお勧めします。
がrailstutorialはこれを具体的に対処して、先割れスプーンはレール3.0でうまく動作させるには、回避策を提供します(この瞬間のように、先割れスプーンは、レール3は、箱から出して準備ができていません)。もちろん、あなたがレール3.0でないなら、あなたは行くのが良いはずです。
先割れスプーンがあるときに確認するレール3.0
http://railstutorial.org/chapters/static-pages#sec:spork
に先割れスプーンランニングを取得する方法を示すチュートリアルの一部は、この回答のために3.0準備
Sporkは私にとって素晴らしい仕事をしてくれました。 –
sporkに関して言及する価値のあるちょうど1つの詳細があります:Windowsでは実行されません。 – lampak
- 1. なぜiframeが遅いのですか?
- 2. なぜアルゴリズムが遅いのですか?
- 3. なぜガベージコレクションが遅いのですか?
- 4. なぜ滝が遅いのですか?
- 5. なぜPageSettings.PrintableAreaが遅いのですか?
- 6. なぜ "htmlspecialchars"が遅いのですか?
- 7. なぜコントローラが遅いのですか?
- 8. なぜNetworkStream.Readが遅いのですか?
- 9. なぜデータバインディングが遅いのですか?
- 10. なぜTestCompleteが遅いのですか?
- 11. なぜメモリアクセスが遅いのですか?
- 12. なぜマルチスレッドが遅いのですか?
- 13. Ruby on Railsコンソールの起動が遅いのはなぜですか?
- 14. なぜメソッドが遅いですか?
- 15. なぜLuaループが遅いですか?
- 16. Rspecが私のルートを好きではないのはなぜですか?
- 17. IEでJqueryが遅いのはなぜですか?
- 18. Ruby 1.8.7でSymbol#to_procが遅いのはなぜですか?
- 19. ハイブでセレクトカウント(*)がセレクト*より遅いのはなぜですか
- 20. FirefoxでinnerHTMLが遅いのはなぜですか?
- 21. QueryOverでSingleOrDefaultが非常に遅いのはなぜですか?
- 22. WindowsでPostgreSQLが遅いのはなぜですか?
- 23. C++がトポロジカルソートでJavaより遅いのはなぜですか?
- 24. IE7でjQuery Ajaxが遅いのはなぜですか?
- 25. IE8でgetBoundingClientRectが遅いのはなぜですか?
- 26. STLでset_intersectionが遅いのはなぜですか?
- 27. Rspecの方が速いが、Sporkではまだ遅い
- 28. ListViewが新しいデバイスで遅くなっても、古いデバイスでは遅いのはなぜですか?
- 29. タブレットのアンドロイドベベリのシークバーが遅いのはなぜですか?
- 30. UIViewの動作が遅いのはなぜですか?
明確にするために、次のようなことをします:spec --color ./spec -X –
spec_serverはスポークのために推奨されなくなりました。 (http://github.com/timcharper/spork) – austinfromboston
https://github.com/sporkrb/spork - 新しいスポークソース – ted