Module: PromMultiProc::Rails

Defined in:
lib/prom_multi_proc/rails.rb

Class Method Summary collapse

Class Method Details

.init(**options) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/prom_multi_proc/rails.rb', line 7

def self.init(**options)
  program_name = File.basename($PROGRAM_NAME)
  app_name = ::Rails.application.class.name.underscore.split("/").first

  defaults = {
    prefix:        "#{app_name}_",
    socket:        ENV.fetch("PROM_MULTI_PROC_SOCKET", ::Rails.root.join("tmp/sockets/metrics.sock").to_s),
    metrics:       ENV.fetch("PROM_MULTI_PROC_DEFINITION_FILE", ::Rails.root.join("config/metrics.json").to_s),
    batch_size:    default_batch_size(program_name),
    batch_timeout: 3,
    validate:      ::Rails.env.development? || ::Rails.env.test?,
    logger:        ::Rails.logger || ::Logger.new(STDOUT)
  }

  config = defaults.merge(options)
  config[:logger].info("Setting up prom_multi_proc for #{app_name}-#{program_name}, batch_size: #{config[:batch_size]}, batch_timeout: #{config[:batch_timeout]}, validate: #{config[:validate]}")

  Base.new(**config)
end