From 52653726149c19ab98438f45a210c1c9ac587b65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Rutkowski?= Date: Mon, 1 Sep 2025 10:19:20 +0200 Subject: [PATCH] Require the main prometheus_exporter module in client and server modules The main module includes some consts and defaults, which both client and server require to work. In the README, it is suggested to treat client and server modules as entry-points, but without requiring the main module they won't work. In this commit, I'm adding a require and tests to show the problem. --- lib/prometheus_exporter/client.rb | 1 + lib/prometheus_exporter/server.rb | 1 + test/client_independent_loading_test.rb | 18 ++++++++++++++++++ test/server_independent_loading_test.rb | 20 ++++++++++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 test/client_independent_loading_test.rb create mode 100644 test/server_independent_loading_test.rb diff --git a/lib/prometheus_exporter/client.rb b/lib/prometheus_exporter/client.rb index d14f8353..12507949 100644 --- a/lib/prometheus_exporter/client.rb +++ b/lib/prometheus_exporter/client.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require_relative "../prometheus_exporter" require "socket" require "logger" diff --git a/lib/prometheus_exporter/server.rb b/lib/prometheus_exporter/server.rb index 944c8f0d..08f9b276 100644 --- a/lib/prometheus_exporter/server.rb +++ b/lib/prometheus_exporter/server.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require_relative "../prometheus_exporter" require_relative "metric" require_relative "server/type_collector" require_relative "server/web_collector" diff --git a/test/client_independent_loading_test.rb b/test/client_independent_loading_test.rb new file mode 100644 index 00000000..026c8bd7 --- /dev/null +++ b/test/client_independent_loading_test.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +# This test verifies that the client can be loaded independently +# without requiring the main prometheus_exporter module first. +# +# DO NOT require test_helper here, as it pre-loads the main module. + +require "minitest/autorun" + +class ClientIndependentLoadingTest < Minitest::Test + def test_client_has_constants_when_loaded_independently + require_relative "../lib/prometheus_exporter/client" + + assert_equal 9394, PrometheusExporter::DEFAULT_PORT + assert_equal "localhost", PrometheusExporter::DEFAULT_BIND_ADDRESS + assert_equal 2, PrometheusExporter::DEFAULT_TIMEOUT + end +end diff --git a/test/server_independent_loading_test.rb b/test/server_independent_loading_test.rb new file mode 100644 index 00000000..03378d2b --- /dev/null +++ b/test/server_independent_loading_test.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +# This test verifies that the server can be loaded independently +# without requiring the main prometheus_exporter module first. +# +# DO NOT require test_helper here, as it pre-loads the main module. + +require "minitest/autorun" + +class ServerIndependentLoadingTest < Minitest::Test + def test_server_has_constants_when_loaded_independently + require_relative "../lib/prometheus_exporter/server" + + assert_equal 9394, PrometheusExporter::DEFAULT_PORT + assert_equal "localhost", PrometheusExporter::DEFAULT_BIND_ADDRESS + assert_equal 2, PrometheusExporter::DEFAULT_TIMEOUT + assert_equal "ruby_", PrometheusExporter::DEFAULT_PREFIX + assert_equal "Prometheus Exporter", PrometheusExporter::DEFAULT_REALM + end +end