0

我继承了一个具有本地开发环境的项目,该环境具有特定于该机器的代码,并且对于生产服务器是不同的。尽管其中大部分包含在常量中,其余的都在测试中,但每次我在生产中从开发和更新中提交时,我都必须在生产中进行相同的更改。幸运的是,这是一个低容量的内部工具。

我想我可以编写一个脚本来自动化它,但我希望有一个更好的解决方案。其他人解决了这个问题吗?

这些问题是相似的,但不是问同样的事情,所以你知道我看了:

(1)对生产数据库进行更改

(2)将更改从 dev 转移到 prod

编辑:Nelson LaQuet 让我走上了我认为正确的道路,这导致我开始配置 Rails Applications。但是,我不确定如何在 config/environments/production.rb 和 config/environments/development.rb 中引用我的 FormController < ApplicationController 常量,例如 MyExternalCodeDir。

此外,我不想被要求将对 MyExternalCodeDir 的每个引用更改为类似 config.MyExternalCodeDir 的内容。

4

2 回答 2

3

您将所有环境设置(数据库连接/路径/URI)抽象到一个文件中。我们称之为“config.ini”

然后,您只需提交一个名为“config.ini.template”的“模板”,其中包含配置文件的结构,清楚地记录了每个值的预期内容 - 以及合理的默认值。然后你提交这个文件。

完成此操作后,删除特定于您所在位置的当前 config.ini 文件,并将其添加到 svn:ignore。现在,当您将 config.ini.template 复制并粘贴到 config.ini 并更改您的设置时,它不会被提交到存储库。

它为每个部署添加了一个额外的步骤,但只能执行一次(除非您添加/删除配置选项)。这是完成你想要的最好和最标准的方法。

于 2009-07-17T22:18:43.550 回答
0

我会在配置文件中移动特定于环境的常量值,这样更容易处理。我还将代码只保存在版本控制系统的一个存储库中,并在两个单独的存储库中管理构建输出:一个用于测试环境,一个用于生产环境。这样我就可以根据我的选择管理我的代码库,当我想部署时,我将首先提交测试,然后从测试合并到生产,此时只需区分配置文件并为生产保留正确的配置环境。

于 2009-07-17T22:25:52.020 回答