diff options
Diffstat (limited to 'lib/chef/node/immutable_collections.rb')
-rw-r--r-- | lib/chef/node/immutable_collections.rb | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/chef/node/immutable_collections.rb b/lib/chef/node/immutable_collections.rb index 13a8aefe97..be9285a755 100644 --- a/lib/chef/node/immutable_collections.rb +++ b/lib/chef/node/immutable_collections.rb @@ -22,8 +22,14 @@ require "chef/node/mixin/immutablize_hash" class Chef class Node - module Immutablize + # For elements like Fixnums, true, nil... + def safe_dup(e) + e.dup + rescue TypeError + e + end + def immutablize(value) case value when Hash @@ -31,7 +37,7 @@ class Chef when Array ImmutableArray.new(value, __root__, __node__, __precedence__) else - value + safe_dup(value).freeze end end end |