From 40b385601152e27509e9c5a6c3190e35d9a85e67 Mon Sep 17 00:00:00 2001 From: Nicolas Rodriguez Date: Tue, 30 Dec 2025 15:33:04 +0100 Subject: [PATCH 1/2] feat: add simplecov gem --- Gemfile | 1 + gemfiles/ar_71.gemfile | 1 + gemfiles/ar_72.gemfile | 1 + gemfiles/ar_80.gemfile | 1 + gemfiles/ar_81.gemfile | 1 + test/test_helper.rb | 9 +++++++-- 6 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 305ae1d..555191b 100644 --- a/Gemfile +++ b/Gemfile @@ -20,6 +20,7 @@ gem "redis" gem "syntax_tree" gem "syntax_tree-disable_ternary" gem "raindrops", "~> 0.19" if !RUBY_ENGINE == "jruby" +gem "simplecov" # Dev tools / linter gem "guard", require: false diff --git a/gemfiles/ar_71.gemfile b/gemfiles/ar_71.gemfile index 9b1a525..3e6ba1e 100644 --- a/gemfiles/ar_71.gemfile +++ b/gemfiles/ar_71.gemfile @@ -16,6 +16,7 @@ gem "rake" gem "redis" gem "syntax_tree" gem "syntax_tree-disable_ternary" +gem "simplecov" gem "guard", require: false gem "guard-minitest", require: false gem "rubocop", require: false diff --git a/gemfiles/ar_72.gemfile b/gemfiles/ar_72.gemfile index a0a5470..85139bb 100644 --- a/gemfiles/ar_72.gemfile +++ b/gemfiles/ar_72.gemfile @@ -16,6 +16,7 @@ gem "rake" gem "redis" gem "syntax_tree" gem "syntax_tree-disable_ternary" +gem "simplecov" gem "guard", require: false gem "guard-minitest", require: false gem "rubocop", require: false diff --git a/gemfiles/ar_80.gemfile b/gemfiles/ar_80.gemfile index 187b4a6..3830ca1 100644 --- a/gemfiles/ar_80.gemfile +++ b/gemfiles/ar_80.gemfile @@ -16,6 +16,7 @@ gem "rake" gem "redis" gem "syntax_tree" gem "syntax_tree-disable_ternary" +gem "simplecov" gem "guard", require: false gem "guard-minitest", require: false gem "rubocop", require: false diff --git a/gemfiles/ar_81.gemfile b/gemfiles/ar_81.gemfile index 9d3fb58..cdac364 100644 --- a/gemfiles/ar_81.gemfile +++ b/gemfiles/ar_81.gemfile @@ -16,6 +16,7 @@ gem "rake" gem "redis" gem "syntax_tree" gem "syntax_tree-disable_ternary" +gem "simplecov" gem "guard", require: false gem "guard-minitest", require: false gem "rubocop", require: false diff --git a/test/test_helper.rb b/test/test_helper.rb index 389faf3..a96d579 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true -$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__) -require "prometheus_exporter" +require "simplecov" + +# Start SimpleCov +SimpleCov.start { add_filter "test/" } require "minitest/mock" require "minitest/autorun" @@ -126,3 +128,6 @@ def get_max_metric_age # Allow stubbing process monotonic clock from any class in the suite Minitest::Test.send(:include, ClockHelper) + +# Load our gem +require "prometheus_exporter" From edc82ece0d62c8770a6cc4365d180f43033d7be2 Mon Sep 17 00:00:00 2001 From: Nicolas Rodriguez Date: Sat, 10 Jan 2026 17:30:18 +0100 Subject: [PATCH 2/2] Fix https://github.com/discourse/prometheus_exporter/issues/364 --- lib/prometheus_exporter/server/web_server.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/prometheus_exporter/server/web_server.rb b/lib/prometheus_exporter/server/web_server.rb index b371075..e3130e0 100644 --- a/lib/prometheus_exporter/server/web_server.rb +++ b/lib/prometheus_exporter/server/web_server.rb @@ -9,6 +9,14 @@ module PrometheusExporter::Server class WebServer attr_reader :collector + PAGESIZE = + begin + `getconf PAGESIZE`.to_i + rescue StandardError + 4096 + end + private_constant :PAGESIZE + def initialize(opts) @port = opts[:port] || PrometheusExporter::DEFAULT_PORT @bind = opts[:bind] || PrometheusExporter::DEFAULT_BIND_ADDRESS @@ -16,6 +24,7 @@ def initialize(opts) @verbose = opts[:verbose] || false @auth = opts[:auth] @realm = opts[:realm] || PrometheusExporter::DEFAULT_REALM + @pid = Process.pid @metrics_total = PrometheusExporter::Metric::Counter.new( @@ -173,15 +182,8 @@ def metrics end def get_rss - @pagesize ||= - begin - `getconf PAGESIZE`.to_i - rescue StandardError - 4096 - end - @pid ||= Process.pid begin - File.read("/proc/#{@pid}/statm").split(" ")[1].to_i * @pagesize + File.read("/proc/#{@pid}/statm").split(" ")[1].to_i * PAGESIZE rescue StandardError 0 end