module ManageEngine module Instrumentation class PumaWorker def present? defined?(Puma::Server) end def version Puma::Const::PUMA_VERSION end def env ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development' end def name 'Puma Worker' end def instrument ManageEngine::APMObjectHolder.instance.log.info "Instrumenting Puma server workers. Version: #{version}" Puma::Server.class_eval do include ManageEngine::Instrumentation::PumaRun alias original_run run alias run agent_run end end end module PumaRun def agent_run(*args, &block) ::ManageEngine::APMObjectHolder.instance.agent.doCollect original_run(*args, &block) end end end end