class InfluxDB::Rails::Middleware::Subscriber

Subscriber acts as base class for different *Subscriber classes, which are intended as ActiveSupport::Notifications.subscribe consumers.

Attributes

configuration[R]
finish[R]
hook_name[R]
payload[R]
start[R]

Public Class Methods

call(name, start, finish, _id, payload) click to toggle source
# File lib/influxdb/rails/middleware/subscriber.rb, line 18
def self.call(name, start, finish, _id, payload)
  new(
    configuration: InfluxDB::Rails.configuration,
    start:         start,
    finish:        finish,
    payload:       payload,
    hook_name:     name
  ).write
end
new(configuration:, hook_name:, start:, finish:, payload:) click to toggle source
# File lib/influxdb/rails/middleware/subscriber.rb, line 10
def initialize(configuration:, hook_name:, start:, finish:, payload:)
  @configuration = configuration
  @hook_name = hook_name
  @start = start
  @finish = finish
  @payload = payload
end

Public Instance Methods

write() click to toggle source
# File lib/influxdb/rails/middleware/subscriber.rb, line 28
def write
  return if disabled?

  metric.write
rescue StandardError => e
  ::Rails.logger.error("[InfluxDB::Rails] Unable to write points: #{e.message}")
end

Private Instance Methods

disabled?() click to toggle source
# File lib/influxdb/rails/middleware/subscriber.rb, line 61
def disabled?
  configuration.ignore_current_environment? ||
    configuration.ignored_hooks.include?(hook_name)
end
duration() click to toggle source
# File lib/influxdb/rails/middleware/subscriber.rb, line 57
def duration
  ((finish - start) * 1000).ceil
end
metric() click to toggle source
# File lib/influxdb/rails/middleware/subscriber.rb, line 40
def metric
  InfluxDB::Rails::Metric.new(
    values:        values,
    tags:          tags,
    configuration: configuration,
    timestamp:     finish
  )
end
tags() click to toggle source
# File lib/influxdb/rails/middleware/subscriber.rb, line 49
def tags
  raise NotImplementedError, "must be implemented in subclass"
end
values() click to toggle source
# File lib/influxdb/rails/middleware/subscriber.rb, line 53
def values
  raise NotImplementedError, "must be implemented in subclass"
end