lib/honeybadger/util/stats.rb in honeybadger-5.2.0 vs lib/honeybadger/util/stats.rb in honeybadger-5.2.1

- old
+ new

@@ -1,50 +1,50 @@ -module Honeybadger - module Util - class Stats - HAS_MEM = File.exist?("/proc/meminfo") - HAS_LOAD = File.exist?("/proc/loadavg") - - class << self - def all - { :mem => memory, :load => load } - end - - # From https://github.com/bloopletech/webstats/blob/master/server/data_providers/mem_info.rb - def memory - out = {} - if HAS_MEM && (meminfo = run_meminfo) - out[:total], out[:free], out[:buffers], out[:cached] = meminfo[0..4].map { |l| l =~ /^.*?\: +(.*?) kB$/; ($1.to_i / 1024.0).to_f } - out[:free_total] = out[:free] + out[:buffers] + out[:cached] - end - out - end - - # From https://github.com/bloopletech/webstats/blob/master/server/data_providers/cpu_info.rb - def load - out = {} - if HAS_LOAD && (loadavg = run_loadavg) - out[:one], out[:five], out[:fifteen] = loadavg.split(' ', 4).map(&:to_f) - end - out - end - - private - - def run_meminfo - run { IO.readlines("/proc/meminfo") } - end - - def run_loadavg - run { IO.read("/proc/loadavg") } - end - - def run - yield - rescue Errno::ENFILE - # Catch issues like 'Too many open files in system' - nil - end - end - end - end -end +module Honeybadger + module Util + class Stats + HAS_MEM = File.exist?("/proc/meminfo") + HAS_LOAD = File.exist?("/proc/loadavg") + + class << self + def all + { :mem => memory, :load => load } + end + + # From https://github.com/bloopletech/webstats/blob/master/server/data_providers/mem_info.rb + def memory + out = {} + if HAS_MEM && (meminfo = run_meminfo) + out[:total], out[:free], out[:buffers], out[:cached] = meminfo[0..4].map { |l| l =~ /^.*?\: +(.*?) kB$/; ($1.to_i / 1024.0).to_f } + out[:free_total] = out[:free] + out[:buffers] + out[:cached] + end + out + end + + # From https://github.com/bloopletech/webstats/blob/master/server/data_providers/cpu_info.rb + def load + out = {} + if HAS_LOAD && (loadavg = run_loadavg) + out[:one], out[:five], out[:fifteen] = loadavg.split(' ', 4).map(&:to_f) + end + out + end + + private + + def run_meminfo + run { IO.readlines("/proc/meminfo") } + end + + def run_loadavg + run { IO.read("/proc/loadavg") } + end + + def run + yield + rescue Errno::ENFILE + # Catch issues like 'Too many open files in system' + nil + end + end + end + end +end