# File lib/puppet/util/cacher.rb, line 43 43: def cached_attr(name, options = {}, &block) 44: init_method = "init_#{name}" 45: define_method(init_method, &block) 46: 47: define_method(name) do 48: cached_value(name) 49: end 50: 51: define_method(name.to_s + "=") do |value| 52: # Make sure the cache timestamp is set 53: cache_timestamp 54: value_cache.synchronize { value_cache[name] = value } 55: end 56: 57: if ttl = options[:ttl] 58: set_attr_ttl(name, ttl) 59: end 60: end