rails:yml合并

bre*_*ter 4 ruby yaml ruby-on-rails erb

假设我的rails配置有一个yml文件...

settings.yml中

defaults: &defaults
  interceptor_email: robot@wearemanalive.com

development:
  <<: *defaults

test:
  <<: *defaults

production:
  <<: *defaults
Run Code Online (Sandbox Code Playgroud)

我希望有另一个yml文件,它不包含在版本控制中,每个开发人员都在本地维护...

user_settings.yml

development:
  interceptor_email: userfoo@domain.com
Run Code Online (Sandbox Code Playgroud)

如何合并这些密钥?我正在用esb处理我的yml文件,所以这也是一个选项.只是无法弄清楚如何做到这一点.我有它设置所以如果我的环境缺少一个键,键会回退到默认值.

Sha*_*son 6

你不能分别阅读两个yml文件吗?

settings = YAML.load(path_to_settings)[RAILS_ENV].symbolize_keys
user_settings = YAML.load(path_to_user_settings)[RAILS_ENV].symbolize_keys
settings.merge!(user_settings)
Run Code Online (Sandbox Code Playgroud)

现在您应该拥有设置的哈希值,然后您可以根据需要合并哈希值.如果第二个哈希与第一个哈希具有相同的密钥,则第一个哈希将被覆盖.