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