Sha256: 1bc4799d556f08cbde1b0095c225dc8fc8d35879891c982eae7d8a0573497723

Contents?: true

Size: 1.34 KB

Versions: 6

Compression:

Stored size: 1.34 KB

Contents

module Chillout
  module Subscribers
    class ActionControllerNotifications

      class RequestMetric
        def initialize(event)
          @end      = event.end
          @duration = event.duration
          @payload  = event.payload.except(:headers)
        end

        def as_measurements()
          format = (payload[:format] || "all").to_s
          format = "all" if format == "*/*"

          [{
             series: "request",
             tags: {
               controller: payload[:controller],
               action:     payload[:action],
               format:     format,
               method:     payload[:method],
               status:     payload[:status],
             },
             timestamp: self.end.iso8601,
             values: {
               finished: 1,
               duration: duration.to_f,
               db:    (payload[:db_runtime]   || 0).to_f,
               view:  (payload[:view_runtime] || 0).to_f,
             },
           }]
        end

        attr_reader :end, :duration, :payload
      end

      def enable(client)
        name = "process_action.action_controller"
        ActiveSupport::Notifications.subscribe(name) do |*args|
          event  = ActiveSupport::Notifications::Event.new(*args)
          metric = RequestMetric.new(event)
          client.enqueue(metric)
        end
      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
chillout-0.8.9 lib/chillout/subscribers/action_controller_notifications.rb
chillout-0.8.5.1 lib/chillout/subscribers/action_controller_notifications.rb
chillout-0.8.8 lib/chillout/subscribers/action_controller_notifications.rb
chillout-0.8.7 lib/chillout/subscribers/action_controller_notifications.rb
chillout-0.8.6 lib/chillout/subscribers/action_controller_notifications.rb
chillout-0.8.5 lib/chillout/subscribers/action_controller_notifications.rb