Method: Puppet::Util::Cacher::ClassMethods#cached_attr
- Defined in:
- lib/vendor/puppet/util/cacher.rb
#cached_attr(name, ttl, &block) ⇒ Object
Provide a means of defining an attribute whose value will be cached. Must provide a block capable of defining the value if it’s flushed..
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/vendor/puppet/util/cacher.rb', line 24 def cached_attr(name, ttl, &block) init_method = "init_#{name}" define_method(init_method, &block) set_attr_ttl(name, ttl) define_method(name) do cached_value(name) end define_method(name.to_s + "=") do |value| # Make sure the cache timestamp is set value_cache.synchronize do value_cache[name] = value set_expiration(name) end end end |