diff options
Diffstat (limited to 'lib/chef/formatters/error_inspectors')
-rw-r--r-- | lib/chef/formatters/error_inspectors/compile_error_inspector.rb | 16 |
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 |