2012-01-18 5 views
2

背景:WindowsでRails/Rspecの読み込み時間を数秒で最適化する方法はありますか? (または先割れスプーンなし)

私は、RubyのWindows 7のx64上で、そして Railsの3.1.1-P290を1.9.2意味エンジンヤードからRailsInstaller 2パッケージを、使用しています。

問題:

Ruby on Rails Tutorialをしようとしているときと、意図したとおりに自動テストと先割れスプーンが動作するようになった後、RSpecのテストが数秒で終了したことを報告しながら、実際の消費時間はそれよりもはるかに大きい明確であり、半分近く、スクリーンキャストで観察されたスプリット・セカンド・レスポンスとはまったく異なります。私は、そのほとんどがRailsの読み込み時間(プリロードの段階でsporkの時間が費やされていることからもわかる)、そしてJRubyがどのように遅いか(Ruby on Linuxと比較して)、rspecあたり15 + s平均的に実行される(ロード時間を考慮に入れて、sporkの有無にかかわらず)TDDの場合は全く受け入れられません。それ以外の方法はありますか?、、数秒のオーダーに減らす方法はありますか?

編集:私はこの質問にどのように間違っていますか?

+0

質問に答えられませんでしたが、WindowsでRailsを使用しようとしましたが、遅くて難しかったです。なぜそれが必要以上に困難になるのでしょうか? Ubuntuをインストールすることをお勧めします(これは同じマシン上で実行できます)。私は2.5秒で単一のテストを実行しています。 –

+0

@BSeven私はWindows上でRailsを学び始めましたが、それはいろいろな目的で使っていましたが、その後はLinuxプラットフォームに移行して深刻な作業をしました。しかし、もっと選択肢があるのはいつもうれしい。 – prusswan

答えて

0

これはおそらく現時点では最適です。 Windows上での同じ設定は、Linux上でわずか数秒で完了します。私はRuby 1.9.3でテストしていませんが、状況を大幅に変更する可能性は低いです。

+0

Ruby 1.9.3は、はるかに高速です。 –

1

レールのローディング時間がかなり長くなります。 あなたが言及したように、これはTDDの殺人者になる可能性があります。

問題に取り組む方法についてのいくつかの方法があります。

  1. 使用警備隊fsのイベントを通知すると先割れスプーンを使用して、レールをフォーク呼び出すために、そしてRSpecのテストは、テスト対象specファイルまたはSUT(被写体に実行呼び出すためには、 )ファイルの変更。
  2. ロジックをレール依存クラス(コントローラ、アクティブレコードモデル)の外に移動し、代わりにプレーンルビーオブジェクトを使用します。

どちらの方法も使用します。 第2のアプローチは、多くの利点があります。

  • あなたはレール、
  • それはドライブのみ、特定の必要なクラスをロードしていないので、超高速に実行されます
  • テストレールの依存関係のないと孤立して自分のクラスをテストすることができます各クラス/モジュール がシステム全体の一部を占めているSRP(single responsibility principle)に向かってあなたはDRYを繰り返します(自分自身を繰り返さないでください) - 小さなものがある場合、それらを再利用する方が簡単です。
  • DI(Dependency Injection)を使用して小さなオブジェクトにコンテキストを与え、テストや再利用を容易にします。

を監視する必要があります:私はUbuntuのを実行

+0

チップのおかげでありがたいですが、Linux上でさえ失われた原因としてこれを見ています。私は自分自身が常に遅い傾向がありますが、まだかなりの時間を要するjavascriptテストを最適化(または最小化)することに常に挑戦しています。スイート全体。私は、Windowsがかなりの経験にもかかわらず、最初の学習曲線(そのチュートリアルの終わりまで)に十分であると思っています。 – prusswan

0

を私は最近、私が他の場所で言及見ていない解決策を考え出しましたVirtualBoxを開き、プロジェクトのディレクトリを共有フォルダとして設定します。つまり、Ubuntuボックスは常に最新バージョンのコードを見るので、LinuxのCLIタイムを楽しむことができ、Windowsを開発プラットフォームとして使用することができます。私はこの設定をこれまでのところ1週間しか使用していませんでしたが、私はまだ不満はありませんでした。

+0

はい、厳密に言えば、これはネイティブWindowsの速度の問題には対応していません。 VMを使用することは実用的な解決策ですが、別の問題(Windowsは遅いですが他の目的で実行する必要があります) – prusswan

+0

私は全く同意します。私は、私のような誰かが問題の実際の解決策を探している場合に備えて、このオプションをそこに置く機会を得たいと思っていました。 –

+0

このソリューションは、WindowsでVagrantを使用するのと同じです。作品は大丈夫です! –

関連する問題