我目前有一个与网络服务器通信的应用。在这个网络服务器中,我有2个实例。在我的本地计算机上测试一个,在远程计算机上测试一个。对我的本地计算机说IP 192.168.0.100
,对远程计算机说http://mycompany.com/webapi
。
我正在使用Git流程,如中所述 (见http://nvie.com/posts/a-successful-git-branching-model/)
现在,只要我创建一个发布分支,我就想从本地服务器切换到远程服务器。
IP存储在公共最终静态变量中。这意味着重新应用一个将其从本地IP更改为远程URL的提交将起作用。
什么是正确的方法?我创造了一个存储并在每个版本中都应用它,但对于像我这样懒惰的人来说,这似乎是太多的体力劳动,并且有太多机会出错(比如忘记应用藏匿处)
答案 0 :(得分:1)
该IP地址是配置,而不是代码,因此不应在您的应用程序中进行硬编码。
由The 12-Factor App和Heroku推广的一种常见方法是使用环境变量设置IP地址:
应用的配置是deploys(登台,制作,开发者环境等)之间可能不同的所有内容。这包括:
- 数据库的资源句柄,Memcached和其他backing services
- 外部服务的凭据,例如Amazon S3或Twitter
- 按部署值,例如部署的规范主机名
Apps有时会将配置存储为代码中的常量。这违反了十二因素,这要求严格地将配置与代码分开。配置在部署之间差异很大,代码没有。
...
十二因素应用程序将配置存储在环境变量 中(通常缩写为 env vars 或 env ) 。在不更改任何代码的情况下,可以在部署之间轻松更改Env变量;与配置文件不同,它们几乎没有机会被意外地检入代码仓库;与自定义配置文件或其他配置机制(如Java系统属性)不同,它们是与语言和操作系统无关的标准。
另一种常见方法(12因素明确拒绝)是对config.ini.sample
之类的示例配置文件进行版本控制,但要求用户将其复制到.gitignore
这样的无版本和config.ini
文件中这是应用程序实际使用的。这使您可以通过修改Git不关心的文件来更改每次安装的设置。
如果没有关于您正在使用的语言和筹码的信息,很难给出更具体的答案。例如,一些框架将这个想法融入其中。