在我的应用程序中,我有一些代码在本地运行时更改,而在远程服务器上进行开发,例如application.yml中的app_domain等。除了每次我在本地运行而不是部署到远程机器时必须手动更改它们,是否有更好的方法来管理这个?
答案 0 :(得分:0)
编辑 - 对于yml
这取决于你如何加载application.yml,但通常当你加载yml文件时,ruby会将它全部解析为一个哈希值。因此,您可以设置类似于database.yml的内容,并在不同的环境下构建所有yml:
development:
domain: localhost
production:
domain: mydomain.com
test:
domain: foo
然后当您加载yml文件时,您想要获取您所在的特定环境的设置,如下所示:
MY_CONFIGS = YAML.load_file("[path to my yaml file]/application.yml")[RAILS_ENV]
答案 1 :(得分:0)
我喜欢马修的答案,除非你在这些文件(密码)中有一些秘密。
如果您在源代码中不需要密码,那么我告诉UrbanDeploy客户何时遇到这种情况就是使用脚本(或者我们有内置脚本)来有效地执行令牌替换关于环境。替换来自部署系统,或部署目标上某处的魔术文件。
无论哪种方式,将环境视为具有需要管理的数据的一阶事物。
答案 2 :(得分:0)
使用kwateeSDCM,您可以按服务器在服务器上部署时自定义任何文件。这样,您只需要一个模板化的application.xml并根据目标服务器对其进行参数化。