重要なトラブルシューティングの後、rake spec
rspecを直接実行する前に(たとえば、スペックのサブセットで)、一度実行する必要があることがわかりました(control-cで中止できます)。Rails3.0.7とRSpec2.5.0を実行しています。
明らかに、rakeはいくつかの重要なデータベースセットアップタスク/コードを実行しています(ルートレベルのレールRakefileやその他の場所にカスタムコードがあります)。
実行せずにraketestデータベースのセットアップタスク/コードを実行するにはどうすればよいrake spec
ですか?
ファイルのサブセットでrspecを実行できることに加えて、specjourを使用してスペックを複数のコアに分散しています(LAN全体にスペックを分散することはまだ成功していません)が、rspecを実行する場合と同じ動作が見られます直接:rake spec
specjourが機能する前に、各テストデータベースで実行する必要があります(2つのコアを想定):
rake spec TEST_ENV_NUMBER=1
control-c (after tests start)
rake spec TEST_ENV_NUMBER=2
control-c (after tests start)
specjour
注:私のconfig / database.ymlには、テスト用にこのエントリがあります(並列テストgemで一般的です)。
test:
adapter: postgresql
encoding: unicode
database: test<%=ENV['TEST_ENV_NUMBER']%>
username: user
password:
parallel_testsはデータベースを正しく設定しているようですが、仕様の多くは失敗しています。
また、実行するspecjour prepare
と、Postgresがデータベースを見つけることができないというエラーをログに記録しますが、データベースは作成されます(テーブルなし)。その後の実行では、エラーはログに記録されませんが、テーブルも作成されません。私の問題全体が単なるバグである可能性があるprepare
ので、githubで報告しました。
Specjour::Configuration.prepare
.specjour / hooks.rbに設定することで、各specjourテストデータベースで任意のコードを実行できると思います。そのため、実行する必要のあるrakeタスクやその他のコードがあれば、そこで機能する可能性があります。