Module: Poise::Helpers::LazyDefault
- Included in:
- TemplateContent, Resource
- Defined in:
- lib/poise/helpers/lazy_default.rb
Overview
Resource mixin to allow lazyily-evaluated defaults in resource attributes. This is designed to be used with LWRPPolyfill or a similar #attributes method.
Class Method Summary collapse
-
.lazy(&block) ⇒ Chef::DelayedEvaluator
Create a lazyily-evaluated block.
Instance Method Summary collapse
-
#set_or_return(symbol, arg, validation) ⇒ Object
Override the default set_or_return to support lazy evaluation of the default value.
Class Method Details
.lazy(&block) ⇒ Chef::DelayedEvaluator
Create a lazyily-evaluated block.
66 67 68 |
# File 'lib/poise/helpers/lazy_default.rb', line 66 def lazy(&block) Chef::DelayedEvaluator.new(&block) end |
Instance Method Details
#set_or_return(symbol, arg, validation) ⇒ Object
Override the default set_or_return to support lazy evaluation of the default value. This only actually matters when it is called from a class level context via #attributes.
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/poise/helpers/lazy_default.rb', line 47 def set_or_return(symbol, arg, validation) if LazyDefault.needs_polyfill? && validation && validation[:default].is_a?(Chef::DelayedEvaluator) validation = validation.dup if (arg.nil? || arg == Poise::NOT_PASSED) && (!instance_variable_defined?(:"@#{symbol}") || instance_variable_get(:"@#{symbol}").nil?) validation[:default] = instance_eval(&validation[:default]) else # Clear the default. validation.delete(:default) end end super(symbol, arg, validation) end |