rake db:migrate
と rake db:schema:load
はどちらもテーブルを作成、変更、削除するときに使うコマンドだけど違いがよく分かっていなかったのでメモメモ。
rake db:migrate
- migrateファイル群を元にschema.rbを作成
- schema.rbを元にSQLクエリを発行する
rake db:schema:load
- schema.rbを元にSQLクエリを発行する
要するにrake db:schema:load
はmigrateファイルの変更は考慮しないよってことか。
ローカルでは rake db:migrete
, CIツール上では rake db:schema:load
と使い分けるのが一般的で、そうすることによってmigrateし忘れてpushしてもCIツール上のschema.rbのバージョンが同じになるようにしてるみたい。
賢いなあ。