私はCapistranoを使用してRailsアプリケーションをデプロイしています。cap deploy
データベースが変更された状況を考えているので、コードが更新される前に移行を実行する必要があるという理由だけではわかりません。あることに気づきましたがcap deploy:migrations
、それは私が望むよりも少し自動化されています。そうしたいです:
- 新しいコードをreleasesディレクトリにプッシュしますが、シンボリックリンクを更新したり、アプリケーションを再起動したりしないでください。
- サーバーにSSHで接続し、実行して、実行
rake:db_abort_if_pending_migrations
する移行が保留中の移行のみであることを確認してから、手動で実行しrake db:migrate
ます。 - デプロイを完了し、シンボリックリンクを更新して、アプリケーションを再起動します。
組み込みのCapistranoタスクを使用してこれを行う簡単な方法はありますか、またはこれを達成するために独自の展開手順を作成する必要がありますか?
ライブデータベースで移行を実行できる場合(列の追加など)を考えていることにも言及する必要があります。より破壊的な変更については、デプロイ中にメンテナンスページを使用してサイトを停止する必要があることに気付きました。