質問: docker 上の開発環境を構築するときに staging の MySQL のダンプファイルをもってきて mysql < db/Dump20181001.sql bundle exec rake db:migrate みたいなコマンドをうっているのですが bundle exec rake db:migrate は何をしているんでしょうか MySQL 自体は Rails 以外のシステムでも使われているため Rails に依存したものではないはずなので ダンプファイルを流し込んだ時点でステージングと同じ状態になっている気がするのですが 実際これを実行しないと Rails から MySQL が使えるようにならないので さらにその後 Rails のコマンドをうつことにどんな意味があるのでしょうか 追記: bundle exec は調べてもよく理解できなかったのですが rake db:migrate は このコマンドを実行すると,Railsプロジェクトのdb/migrateディレクトリの中にあるスクリプトファイルに基づいてデータベースにテーブルを作成します. とあるのですがダンプを流し込んだ時点でデータベースにテーブルができてる気がするのでなぜ必要なのかがわかりません
回答: ステージングからダンプして開発環境にインポートするのは数分かかるため、毎回行うのは手間である 動作チェックで特に最新のデータが必要でなければダンプファイルは古いまま使いまわして、 カラム追加等は頻繁に行われるため最新のスキーマを反映させるためにこまめにmigrateを行うということでした 普通はカラム追加等スキーマへの変更はそうそうあるものではないんでしょうか 自社の固有事情みたいなので申し訳ありません