去年阅读和玩Rails时,给我留下最深刻印象的工具之一就是Rake。一个数据库版本控制系统,它将所有dev db的相同集成权保留在构建中......这样的事情会让生活变得更加容易(也更安全)!
然而,我无法弄清楚的其中一件事: 当您实际上无法访问生产服务器时,如何将这些更改移动到生产服务器?我们在全国范围内有多个服务器,通过安装程序包安装/升级应用程序。
注意:这个问题更多的是关于策略而不是Rails / Rake特定技术。我们不使用rails,我们使用.Net。但是,如果我能弄清楚这个发布方案,似乎有几个工具Migratordotnet being one可以让我们做类似的事情。
答案 0 :(得分:1)
您可以使用Red Gate's SQL Compare之类的东西来生成模式差异脚本,以便自动执行更新数据库的过程。我已经手动使用该工具进行此类更改,并且可以轻松地看到创建一个程序,该程序将在升级过程中运行这些更新。但是,如果我要自动化它,我会设计一些东西,使我能够检查到哪个版本的模式,并以正确的顺序运行必要的脚本,以使其达到所需的版本。
答案 1 :(得分:1)
您可能知道,在生产中运行迁移的标准Rails方式是Capistrano。它有一个deploy:migrations任务,使用ssh在远程服务器上运行迁移。
你或许可以让Capistrano适应你想要的。它本质上是一种在远程服务器组上运行命令的灵活方式。您需要在要部署 的计算机上安装Ruby才能使用它,但不要在要部署到的计算机上安装。
您最好的选择可能是编写自定义Capistrano任务来上传setup.exe,运行它,然后运行迁移(可能使用Migrator.NET)。