# File lib/puppet/property.rb, line 103
103:     def call_valuemethod(name, value)
104:         event = nil
105:         if method = self.class.value_option(name, :method) and self.respond_to?(method)
106:             #self.debug "setting %s (currently %s)" % [value, self.retrieve]
107: 
108:             begin
109:                 event = self.send(method)
110:             rescue Puppet::Error
111:                 raise
112:             rescue => detail
113:                 if Puppet[:trace]
114:                     puts detail.backtrace
115:                 end
116:                 error = Puppet::Error.new("Could not set %s on %s: %s" %
117:                     [value, self.class.name, detail], @resource.line, @resource.file)
118:                 error.set_backtrace detail.backtrace
119:                 raise error
120:             end
121:         elsif block = self.class.value_option(name, :block)
122:             # FIXME It'd be better here to define a method, so that
123:             # the blocks could return values.
124:             event = self.instance_eval(&block)
125:         else
126:             devfail "Could not find method for value '%s'" % name
127:         end
128:         return event, name
129:     end