4

既存の Ruby ランタイム内から RSpec を使用して、ファイルが変更されるたびに仕様を実行しようとしています。これは、JRuby と JVM の起動時間が原因です。実行するたびにこれを排除するには、一度 Ruby を起動してから、変更されたファイルと実行仕様のみをリロードします。私は Guard (さまざまな拡張機能を使用) と watchr を使用していましたが、すべて以下に説明する問題に悩まされているようです。

私は問題を RSpec 自体に突き止めました。問題は、RSpec を介してRSpec::Core::Runner.run数回実行すると、spec ファイルが を使用してリロードされるまで正常に動作することloadです。その後、RSpecs は spec の実行を 2 回開始します。この問題をライブで示すサンプル プロジェクトを作成しました: https://github.com/mostr/rspec_double_run_issue

以下は出力例です。

ruby run_spec_in_loop.rb 
Running spec from within ruby runtime
.
Finished in 0.00047 seconds
1 example, 0 failures

loading spec file via 'load' as if it was changed and we wanted changes to be picked up
Running spec from within ruby runtime
..
Finished in 0.001 seconds
2 examples, 0 failures

既存の Ruby ランタイム内から実行する場合、RSpec に後続の実行間でコンテキストをクリアするように指示する方法はありますか? また、これを RSpec Core プロジェクトの問題#826として提起しました。

4

1 に答える 1