初めて本番環境にデプロイする準備をしている多数の移行ファイルを含むアプリを持っているとしましょう。私が理解していることから、本番サーバーでデータベースを起動するには、基本的に2つのオプションがあります。
- A - を実行
db:migrate
し、まだ実行していないすべての移行を循環させます - B - 実行
db:schema:load
し、スキーマ ファイルからデータベースを構築します。
schema.rb
コメントで説明されているように、B が新しい展開に適していることはわかっています。
# If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
私が疑問に思っているのは、これが本番サーバーでの移行にどのように影響するかということです。たとえば、次のことを順番に行うとします。
db:schema:load
新しい本番サーバーで実行します。- 開発中のスキーマを変更し、本番環境にプッシュします。
db:migrate
本番サーバーで実行
何が起こるか?アクションよりも新しい移行のみを使用することを認識しますかdb:schema:load
、それともすべてを実行しようとしますか?