diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2015-02-19 14:55:50 -0800 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2015-02-23 10:14:04 -0800 |
commit | 2d324fc863d81118d586734ea0f9cd937ee2dd10 (patch) | |
tree | 751a235e9a38d775a4e5b6097588ce78f88a4c75 /lib/chef | |
parent | 30520d738a3683b15a70d43dd9cf1aa3da61686d (diff) | |
download | chef-2d324fc863d81118d586734ea0f9cd937ee2dd10.tar.gz |
handle autovivifying ivars on access
Diffstat (limited to 'lib/chef')
-rw-r--r-- | lib/chef/mixin/params_validate.rb | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/chef/mixin/params_validate.rb b/lib/chef/mixin/params_validate.rb index 0a84d9b6e9..b96e1fb978 100644 --- a/lib/chef/mixin/params_validate.rb +++ b/lib/chef/mixin/params_validate.rb @@ -85,8 +85,13 @@ class Chef def nillable_set_or_return(symbol, arg, validation) iv_symbol = "@#{symbol.to_s}".to_sym - if arg == NULL_ARG && self.instance_variable_defined?(iv_symbol) == true - get_ivar(iv_symbol, symbol, validation) + if arg == NULL_ARG + if self.instance_variable_defined?(iv_symbol) == true + get_ivar(iv_symbol, symbol, validation) + else + # on access we create the iv and set it to nil for back-compat + set_ivar(iv_symbol, symbol, nil, validation) + end else set_ivar(iv_symbol, symbol, arg, validation) end |