# 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