0

去年阅读和使用 Rails 时,给我留下最深刻印象的工具之一是 Rake。一个数据库版本控制系统,可以将所有开发数据库的相同内容直接集成到构建中......这样的事情会让生活变得更加轻松(和更安全)!

但是,我无法弄清楚的一件事是:当您实际上无法访问生产服务器时,如何将这些更改移动到生产服务器?我们在全国有多个服务器,通过安装包安装/升级应用程序。

注意:这个问题更多的是关于策略而不是 Rails/Rake 特定技术。我们不使用rails,我们使用.Net。但如果我能弄清楚这个发布场景,似乎有几个工具Migratordotnet可以让我们做类似的事情。

4

2 回答 2

1

您也许可以使用Red Gate 的 SQL Compare 之类的工具来生成模式差异脚本,从而使您能够自动执行更新数据库的过程。我已经手动使用该工具进行了此类更改,并且可以轻松地看到创建一个程序来运行这些更新作为升级过程的一部分。但是,如果我要使其自动化,我会设计一些东西,使我能够检查架构的版本并以正确的顺序运行必要的脚本以将其调出所需的版本。

于 2009-03-28T17:27:10.130 回答
1

您可能知道,在生产环境中运行迁移的标准 Rails 方式是Capistrano。它有一个 deploy:migrations 任务,使用 ssh 在远程服务器上运行迁移。

你也许可以调整 Capistrano 来做你想做的事。它本质上是一种在远程服务器组上运行命令的灵活方式。您需要在要部署的机器上安装 Ruby才能使用它,而不是在要部署的机器上。

您最好的选择可能是编写自定义 Capistrano 任务来上传 setup.exe,运行它,然后运行迁移(可能使用 Migrator.NET)。

于 2009-04-07T20:01:26.643 回答