Module: RailsOrbit::MetricWriter

Defined in:
lib/rails_orbit/metric_writer.rb

Class Method Summary collapse

Class Method Details

.executorObject



6
7
8
9
10
# File 'lib/rails_orbit/metric_writer.rb', line 6

def executor
  @executor ||= Concurrent::SingleThreadExecutor.new(
    fallback_policy: :discard
  )
end

.reset!Object



31
32
33
34
# File 'lib/rails_orbit/metric_writer.rb', line 31

def reset!
  shutdown
  @executor = nil
end

.shutdownObject



25
26
27
28
29
# File 'lib/rails_orbit/metric_writer.rb', line 25

def shutdown
  return unless defined?(@executor) && @executor
  executor.shutdown
  executor.wait_for_termination(5)
end

.write(key:, value:, dimension: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/rails_orbit/metric_writer.rb', line 12

def write(key:, value:, dimension: nil)
  executor.post do
    RailsOrbit::ApplicationRecord.connection_pool.with_connection do
      RailsOrbit::Metric.insert(
        { key: key, value: value, dimension: dimension, recorded_at: Time.current },
        returning: false
      )
    end
  rescue => e
    Rails.logger.error("[rails_orbit] MetricWriter failed: #{e.message}")
  end
end