128

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

4

3 に答える 3

120

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

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

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

于 2013-03-02T02:26:25.570 に答える
42

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

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

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

于 2013-03-02T02:29:41.583 に答える