Just do IT

思うは招く

Rails の /bin/setup にある db:prepare はなにをするのか

rails newをするとデフォルトで./bin/setupスクリプトが生成される。

Rails6 では、そのなかにbin/rails db:prepareコマンドがある。

bin/rails db:prepare

これは何をしてくれるのか。

DBが存在しない場合

bin/rails db:prepareがすること

  • DBをつくる
  • schema.rb を参考にテーブルを作成する
  • rails db:seedを実行する

試しに、自分のテストアプリでbin/rails db:dropをしてDBを削除し、bin/rails db:prepareをしてみた。

すると、テストデータが入っていることを確認できた。つまり、他の人にアプリを見てもらう場合は./bin/setupをしてもらうだけで、テストデータが投入された状態でアプリをチェックすることができる。

DBが存在する場合

bin/rails db:prepareがすること

  • rails db:migrateを実行する。

しかし、これだとrails db:seedは実行されないため、テストデータは投入されない。

参考:Rails6 のちょい足しな新機能を試す95(db:prepare 編) - Qiita