在本地与远程使用不同的设置,例如application.yml等文件

时间:2011-08-14 23:29:06

标签: ruby-on-rails deployment

在我的应用程序中,我有一些代码在本地运行时更改,而在远程服务器上进行开发,例如application.yml中的app_domain等。除了每次我在本地运行而不是部署到远程机器时必须手动更改它们,是否有更好的方法来管理这个?

3 个答案:

答案 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并根据目标服务器对其进行参数化。