summaryrefslogtreecommitdiff
path: root/lib/chef/node
diff options
context:
space:
mode:
authordanielsdeleo <dan@opscode.com>2013-01-25 17:14:32 -0800
committerdanielsdeleo <dan@opscode.com>2013-01-25 17:14:32 -0800
commitf71f535714c84b7106ed7620b6da85d2fadbd03c (patch)
tree68d4b6d29a514899c745fb242f8c0d7be05a235a /lib/chef/node
parent1cf3a2815e3f244a866521a564531878e00b1e69 (diff)
downloadchef-f71f535714c84b7106ed7620b6da85d2fadbd03c.tar.gz
fix errors when merging deeply nested values
Diffstat (limited to 'lib/chef/node')
-rw-r--r--lib/chef/node/attribute.rb35
1 files changed, 20 insertions, 15 deletions
diff --git a/lib/chef/node/attribute.rb b/lib/chef/node/attribute.rb
index d8302cf18e..eb6a0372d5 100644
--- a/lib/chef/node/attribute.rb
+++ b/lib/chef/node/attribute.rb
@@ -284,7 +284,7 @@ class Chef
def merged_attributes
@merged_attributes ||= begin
- components = [combined_default, @normal, combined_override, @automatic]
+ components = [merge_defaults, @normal, merge_overrides, @automatic]
resolved_attrs = components.inject(Mash.new) do |merged, component|
Chef::Mixin::DeepMerge.hash_only_merge(merged, component)
end
@@ -293,23 +293,11 @@ class Chef
end
def combined_override
- @combined_override ||= begin
- resolved_attrs = OVERRIDE_COMPONENTS.inject(Mash.new) do |merged, component_ivar|
- component_value = instance_variable_get(component_ivar)
- Chef::Mixin::DeepMerge.merge(merged, component_value)
- end
- immutablize(resolved_attrs)
- end
+ @combined_override ||= immutablize(merge_overrides)
end
def combined_default
- @combined_default ||= begin
- resolved_attrs = DEFAULT_COMPONENTS.inject(Mash.new) do |merged, component_ivar|
- component_value = instance_variable_get(component_ivar)
- Chef::Mixin::DeepMerge.merge(merged, component_value)
- end
- immutablize(resolved_attrs)
- end
+ @combined_default ||= immutablize(merge_defaults)
end
def [](key)
@@ -358,6 +346,23 @@ class Chef
@set_unless_present
end
+ private
+
+ def merge_defaults
+ DEFAULT_COMPONENTS.inject(Mash.new) do |merged, component_ivar|
+ component_value = instance_variable_get(component_ivar)
+ Chef::Mixin::DeepMerge.merge(merged, component_value)
+ end
+ end
+
+ def merge_overrides
+ OVERRIDE_COMPONENTS.inject(Mash.new) do |merged, component_ivar|
+ component_value = instance_variable_get(component_ivar)
+ Chef::Mixin::DeepMerge.merge(merged, component_value)
+ end
+ end
+
+
end
end