我正在使用 Capistrano 部署 Rails 应用程序。我正在考虑数据库发生更改的情况,所以我不能简单地 cap deploy
因为迁移需要在代码更新之前运行。我意识到有一个cap deploy:migrations
,但这比我想要的更自动一些。我想要:
- 将新代码推送到版本目录,但不更新符号链接(symbolic link)或重新启动应用程序。
- ssh 进入服务器,运行
rake:db_abort_if_pending_migrations
确认我要运行的迁移是唯一待处理的迁移,然后运行 rake db:migrate
手动。 - 完成部署、更新符号链接(symbolic link)并重新启动应用程序。
是否有任何简单的方法可以使用内置 Capistrano 任务来执行此操作,或者我需要编写自己的部署步骤来完成此操作?
我还应该提到,我正在考虑可以在实时数据库上运行迁移的情况(例如添加列)。对于更具破坏性的更改,我意识到我需要在部署期间关闭带有维护页面的站点。
最佳答案
尝试:
cap 部署:update_code
按照您所描述的方式手动或通过
cap 登录服务器 外壳
cap 部署:符号链接(symbolic link)部署:重新启动
请参阅cap -e部署:update_code部署:符号链接(symbolic link)部署:重新启动部署:shell
了解更多信息。
希望这对您有所帮助。
关于ruby-on-rails - Capistrano 部署但手动运行迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5238951/