rake db:test:prepareは実際には何をしますか?


124

Railsのチュートリアルビデオに従ってdb:test:prepareいますが、コマンドが実際に何をしているのかわかりません。誰かが説明を提供できますか?

回答:


119

上記のrake db:migrateは、開発環境で保留中の移行を実行し、db / schema.rbを更新します。rake db:test:loadは、現在のdb / schema.rbからテストデータベースを再作成します。以降の試行では、最初にdb:test:prepareを実行することをお勧めします。これは、保留中の移行を最初にチェックし、適切に警告するためです。

- http://guides.rubyonrails.org/testing.html

基本的には、データベースの複製を処理するため、テストに対して移行を実行してテストデータベースを更新する必要はありません。


19
rake db:test:prepareは非推奨になりました。
Jngai1297 2014年

3
上記のURLは無効です
riffraff


4
@ Jngai1297もう!
Phillipp

1
@Phillipp 1より多くの時間をguides.rubyonrails.org/v5.0/...
yozzz

42

具体的にrake db:test:prepareは、次のことを行います。

  • 保留中の移行を確認し、
  • テストスキーマをロードする

つまり、db/schema.rbファイルを調べて、実行されていないプロジェクトに存在する移行があるかどうかを判断します。未解決の移行がないと仮定すると、データベースが空になり、db/schema.rbファイルの内容に基づいて再ロードされます。


2

rake db:test:prepareは、このようなPGの問題に対する優れたソリューションです。

「PG :: UndefinedTable:ERROR:Relation does not exist」、正しいRailsの命名と規約を使用して実行できない rake db:migrate RAILS_ENV=production

たとえば、ここで説明するバグのテストデータベースを作成できない場合:「PG未定義のエラー関係ユーザーが存在しません」

このエラーを取り巻く「PG :: UndefinedTable:エラー:リレーションxxxxxは存在しません」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.