kar*_*iks 7 ruby-on-rails jrubyonrails
背景:
步骤1 - >我们有一个框,通过在具有特定配置的测试模式下运行应用程序来运行单元和功能测试.
步骤2 - >步骤1成功后,我们通过在另一个框中以不同配置集的测试模式运行应用程序来运行应用程序的集成测试.
步骤3 - >步骤2成功后,我们通过在生产模式下,在性能测试框中运行应用程序的性能测试.
步骤4 - >步骤3成功后,构建被认为是稳定的,UAT框用该代码库更新,应用程序在生产模式下运行,供客户查看和反馈.步骤5 - >使用来自客户的GO,生产框将使用代码库进行更新.
现在,从上述步骤我们观察到,在步骤1和2中,当应用程序在测试模式下运行时,它具有不同的配置.步骤3,4和5的情况类似.
在这种情况下,推荐的做法是什么?我们有YAML配置文件,但我个人认为维护大量配置文件没有意义.因此,我从
"每个环境的配置文件"的实践
改为
"每个导轨模式的配置文件,将变量外部化到Linux环境".
我是在正确的轨道上吗?我不采取行动,简化事情吗?
这两种方法的优点和缺点是什么?
Bob*_*man 12
根据我的经验,环境变量是最后的配置选项.他们绝对有自己的位置,但应用程序通常应首先检查一些其他更可靠和明确有意的配置选项.我强烈建议从YAML文件加载配置,并仅使用环境变量作为后备.始终假设您的环境变量将适用于系统范围内的所有内容,并假设它会在某个时刻意外取消设置或设置为错误的值.即,您的应用程序不应提交seppuku,因为某些配置目录已设置为/
并且它没有权限(或者更糟糕的是,您擦除驱动器,因为应用程序运行为root
).或者更有可能的是,像你这样的东西RAILS_ENV
被设定为test
它应该已经存在production
并且没有人意识到并且现在用户正在将数据写入错误的地方或者/dev/null
考虑到所有500个.
就个人而言,我喜欢logger.warn
随时回退到配置值的环境变量.
老实说,对于您的确切问题,我可能会传递配置值,以便在命令行启动哪个环境.
归档时间: |
|
查看次数: |
3904 次 |
最近记录: |