提交 4d858b3f 编写于 作者: K kirikiriyamama

Merge shared configuration deeply

上级 b4ee2d5f
......@@ -229,7 +229,7 @@ def config_for(name, env: Rails.env)
if yaml.exist?
require "erb"
config = YAML.load(ERB.new(yaml.read).result, symbolize_names: true) || {}
config = (config[:shared] || {}).merge(config[env.to_sym] || {})
config = (config[:shared] || {}).deep_merge(config[env.to_sym] || {})
ActiveSupport::OrderedOptions.new.tap do |options|
options.update(config)
......
......@@ -2034,6 +2034,27 @@ class D < C
assert_equal(:bar, Rails.application.config.my_custom_config[:foo])
end
test "config_for merges shared configuration deeply" do
app_file "config/custom.yml", <<-RUBY
shared:
foo:
bar:
baz: 1
development:
foo:
bar:
qux: 2
RUBY
add_to_config <<-RUBY
config.my_custom_config = config_for('custom')
RUBY
app "development"
assert_equal({ baz: 1, qux: 2 }, Rails.application.config.my_custom_config[:foo][:bar])
end
test "config_for with empty file returns an empty hash" do
app_file "config/custom.yml", <<-RUBY
RUBY
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册