いいえ。spec ヘルパーに spork がありますが、大規模なスイートでは全体的にテストが遅くなるため、あまり使用しません。迅速に反復し、TDD 中にテストの小さなサブセットを繰り返し実行する場合にのみ、spork を実行します。spork が実行されていないときは、単純に--drb
オプションを RSpec に渡さず、すべてが Spork なしで実行されます。明らかな Spork がありますが、それを開始して--drb
.
prefork ブロックなどをそこに置きたくない場合は、それらを実行する前に環境変数を設定する必要があります。これにより、問題が発生している場合に条件付きでそれらをバイパスできます。
編集 | Spork を実行していないときは prefork ブロックがまったく読み込まれないように、spec ヘルパーを複数のファイルに分割しました。必要ありませんが、私がやった方法は次のとおりです。
spec_helper.rb は、簡単な環境チェックを行った後、2 つの異なるファイルのいずれかをロードします)
ENV["RAILS_ENV"] ||= 'test'
# Conditional Spork.prefork (this comment is needed to fool Spork's `bootstrapped?` check)
if /spork/i =~ $0 || RSpec.configuration.drb?
require File.expand_path("../spec_helper_spork", __FILE__)
else
require File.expand_path("../spec_helper_base", __FILE__)
end
spec_helper_base.rb は、Spork を含まない元の spec_helper の単なるコピーです (Spork を削除した場合は、名前を元に戻すことができます)。
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'database_cleaner'
# Load all .rb helper files under the support/ directory
Dir[Rails.root.join("spec/support/**/*.rb")].each { |file| require file }
RSpec.configure do |config|
# ... the usual stuff ...
end
最後に、spec_helper_spork.rb は、spec_helper_base.rb の単なるラッパーです。
require 'spork'
Spork.prefork do
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'database_cleaner'
end
Spork.each_run do
$rspec_start_time = Time.now
require File.expand_path("../spec_helper_base", __FILE__)
end
spec_helper_spork.rb が読み込まれるのは、次の場合のみです。
a) コマンドを呼び出すb)オプションspork
を指定して spec を実行する--drb
これは私にとってはうまくいきます。しかし、それが必要ないことを十分に強調することはできません。--drb
とにかくオプションを渡さない限り、spork が実行されていなくても Spec は正常に実行されます。私はこれを行ったので、spec ヘルパーから完全に分割するのが好きです。