Sha256: a0b147601ab2f412fbf24cdaa2774a6d1bb7d13e2ce6529a1549c2ef82e17fc4

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

module XRayMachine
  class Summary
    def self.add(payload)
      payload_sum = XRayMachine::LogSubscriber.runtimes.map{|k,v| v}.inject(0){|a,b| a+b}

      # most of the times things are lazyloaded
      if payload[:view_runtime] && payload[:view_runtime] > payload_sum
        payload[:view_runtime] -= payload_sum
      end
    end

    def self.messages
      XRayMachine::LogSubscriber.runtimes.map do |stream_name, duration|
        stream = XRayMachine::Config.for(stream_name)
        if stream.show_in_summary?
          "%s: %.1fms" % [stream.title, duration]
        end
      end.compact
    end

    module Runtime
      extend ActiveSupport::Concern

    protected

      def append_info_to_payload(payload)
        super.tap do
          XRayMachine::Summary.add(payload)
        end
      end

      module ClassMethods
        def log_process_action(payload)
          super.tap do |messages|
            XRayMachine::Summary.messages.each do |xray_message|
              messages << xray_message
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
x-ray-machine-1.0.4 lib/x_ray_machine/summary.rb
x-ray-machine-1.0.3 lib/x_ray_machine/summary.rb
x-ray-machine-1.0.2 lib/x_ray_machine/summary.rb