summaryrefslogtreecommitdiff
path: root/lib/chef/formatters/error_inspectors
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/formatters/error_inspectors')
-rw-r--r--lib/chef/formatters/error_inspectors/compile_error_inspector.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/chef/formatters/error_inspectors/compile_error_inspector.rb b/lib/chef/formatters/error_inspectors/compile_error_inspector.rb
index d64d5e7b01..fe418ed485 100644
--- a/lib/chef/formatters/error_inspectors/compile_error_inspector.rb
+++ b/lib/chef/formatters/error_inspectors/compile_error_inspector.rb
@@ -44,6 +44,18 @@ class Chef
error_description.section("Cookbook Trace:", traceback)
error_description.section("Relevant File Content:", context)
end
+
+ if exception_message_modifying_frozen?
+ msg = <<-MESSAGE
+ Chef calls the freeze method on certain ruby objects to prevent
+ pollution across multiple instances. Specifically, resource
+ properties have frozen default values to avoid modifying the
+ property for all instances of a resource. Try modifying the
+ particular instance variable or using an instance accessor instead.
+ MESSAGE
+
+ error_description.section("Additional information:", msg.gsub(/^ {6}/, ''))
+ end
end
def context
@@ -111,6 +123,10 @@ class Chef
end
end
+ def exception_message_modifying_frozen?
+ exception.message.include?("can't modify frozen")
+ end
+
end
end