lib/request_log_analyzer/tracker.rb in request-log-analyzer-1.2.0 vs lib/request_log_analyzer/tracker.rb in request-log-analyzer-1.2.1

- old
+ new

@@ -7,32 +7,55 @@ end # Base Tracker class. All other trackers inherit from this class # # Accepts the following options: - # * <tt>:line_type</tt> The line type that contains the duration field (determined by the category proc). # * <tt>:if</tt> Proc that has to return !nil for a request to be passed to the tracker. + # * <tt>:line_type</tt> The line type that contains the duration field (determined by the category proc). # * <tt>:output</tt> Direct output here (defaults to STDOUT) + # * <tt>:unless</tt> Proc that has to return nil for a request to be passed to the tracker. # # For example :if => lambda { |request| request[:duration] && request[:duration] > 1.0 } class Base attr_reader :options + # Initialize the class + # Note that the options are only applicable if should_update? is not overwritten + # by the inheriting class. + # + # === Options + # * <tt>:if</tt> Handle request if this proc is true for the handled request. + # * <tt>:unless</tt> Handle request if this proc is false for the handled request. + # * <tt>:line_type</tt> Line type this tracker will accept. def initialize(options ={}) @options = options end + # Hook things that need to be done before running here. def prepare end + # Will be called with each request. + # <tt>request</tt> The request to track data in. def update(request) end + # Hook things that need to be done after running here. def finalize end + # Determine if we should run the update function at all. + # Usually the update function will be heavy, so a light check is done here + # determining if we need to call update at all. + # + # Default this checks if defined: + # * :line_type is also in the request hash. + # * :if is true for this request. + # * :unless if false for this request + # + # <tt>request</tt> The request object. def should_update?(request) return false if options[:line_type] && !request.has_line_type?(options[:line_type]) if options[:if].kind_of?(Symbol) return false unless request[options[:if]] @@ -47,12 +70,26 @@ end return true end + # Hook report generation here. + # Defaults to self.inspect + # <tt>output</tt> The output object the report will be passed to. def report(output) output << self.inspect output << "\n" + end + + # The title of this tracker. Used for reporting. + def title + self.class.to_s + end + + # This method is called by RequestLogAnalyzer::Aggregator:Summarizer to retrieve an + # object with all the results of this tracker, that can be dumped to YAML format. + def to_yaml_object + nil end end end \ No newline at end of file