global

def start(launcher)

rubocop:disable Metrics/BlockLength
https://docs.appsignal.com/ruby/integrations/puma.html
For even more information:

This plugin ensures Puma metrics are sent to the AppSignal agent using StatsD.

AppSignal Puma plugin
def start(launcher)
  @launcher = launcher
  log_debug "AppSignal: Puma plugin start."
  in_background do
    log_debug "AppSignal: Start Puma stats collection loop."
    plugin = AppsignalPumaPlugin.new
    loop do
      # Implement similar behavior to minutely probes.
      # Initial sleep to wait until the app is fully initialized.
      # Then loop every 60 seconds and collect the Puma stats as AppSignal
      # metrics.
      sleep sleep_time
      log_debug "AppSignal: Collecting Puma stats."
      stats = fetch_puma_stats
      if stats
        plugin.call(stats)
      else
        log_debug "AppSignal: No Puma stats to report."
      end
    rescue StandardError => error
      log_error "Error while processing metrics.", error
    end
  end
end