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.
中缺少一些关键的附加信息
我目前正在尝试加载这样的 .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.
中缺少一些关键的附加信息