# File lib/facter/util/resolution.rb, line 73 def evaluate(&block) if @last_evaluated msg = "Already evaluated #{@name}" msg << " at #{@last_evaluated}" if msg.is_a? String msg << ", reevaluating anyways" Facter.warn msg end instance_eval(&block) # Ruby 1.9+ provides the source location of procs which can provide useful # debugging information if a resolution is being evaluated twice. Since 1.8 # doesn't support this we opportunistically provide this information. if block.respond_to? :source_location @last_evaluated = block.source_location.join(':') else @last_evaluated = true end end