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
values()
click to toggle source
# File lib/influxdb/rails/middleware/subscriber.rb, line 53 def values raise NotImplementedError, "must be implemented in subclass" end