Rails - 为 config_for 方法启用深度合并?

Rails - Enable deep merge for config_for method?

我目前正在尝试加载这样的 .yml 配置文件:

settings = Rails.application.config_for(:file_name)

此文件类似于:

shared:
  variable_1:
    variable_1_a: something
    variable_1_b: something
  variable_2: example

development:
  variable_1:
    variable_1_a: something else

但是它不会使用深度合并加载,而只会加载它:

settings => {
  variable_1 => {
    variable_1_a => 'something else'
  }
  variable_2 => 'example'
}

有没有办法为 config_for 方法也包含 'variable_1_b'?

编辑: 显然我使用的是旧版本的 rails,因为此行为在 rails 6.1+ 提交中已更改:https://github.com/rails/rails/commit/4d858b3f2a70aefda741c517c2db61b4d7d4adfb#diff-84292fcaae327f1a70e7c3b1ebb55b193dea016c1118a8566930bc5cd2a51ba5

这意味着更新 rails 版本解决了我的问题。

我无法重现您的问题。事实上,这在我的机器上完美运行:

./config/file_name.yml

shared:
  variable_1:
    variable_1_a: something
    variable_1_b: something
  variable_2: example

development:
  variable_1:
    variable_1_a: something else

Rails 控制台(为清楚起见添加了空格):

Rails.application.config_for(:file_name)
=> {
    :variable_1 => {
      :variable_1_a => "something else",
      :variable_1_b=>"something"
    },
    :variable_2=>"example"
  }

此外,this behaves exactly as described in the rails documentation

因此,我投票结束您的问题,除非您的 post.

中缺少一些关键的附加信息