From f5543d7a99e0280330f4af0a0480965713ca5601 Mon Sep 17 00:00:00 2001 From: Petr Heinz Date: Mon, 24 Nov 2025 22:06:46 +0100 Subject: [PATCH 1/7] Update GitHub Actions runner to use ubuntu-latest --- .github/workflows/main.yml | 53 ++------------------------------------ 1 file changed, 2 insertions(+), 51 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0d8af34..91a3b72 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ on: jobs: test: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest strategy: fail-fast: false @@ -25,10 +25,7 @@ jobs: - "2.7" - "2.6" - "2.5" - - "jruby-9.4.3.0" - - "jruby-9.2.14.0" - - "truffleruby-23.0.0" - - "truffleruby-22.1.0" + - "truffleruby" gemfile: - "rails-edge" - "rails-8.0" @@ -51,14 +48,6 @@ jobs: ruby-version: "2.6" - gemfile: "rails-edge" ruby-version: "2.5" - - gemfile: "rails-edge" - ruby-version: "jruby-9.4.3.0" - - gemfile: "rails-edge" - ruby-version: "jruby-9.2.14.0" - - gemfile: "rails-edge" - ruby-version: "truffleruby-22.1.0" - - gemfile: "rails-edge" - ruby-version: "truffleruby-23.0.0" - gemfile: "rails-8.0" ruby-version: "3.1" @@ -70,14 +59,6 @@ jobs: ruby-version: "2.6" - gemfile: "rails-8.0" ruby-version: "2.5" - - gemfile: "rails-8.0" - ruby-version: "jruby-9.4.3.0" - - gemfile: "rails-8.0" - ruby-version: "jruby-9.2.14.0" - - gemfile: "rails-8.0" - ruby-version: "truffleruby-22.1.0" - - gemfile: "rails-8.0" - ruby-version: "truffleruby-23.0.0" - gemfile: "rails-7.2" ruby-version: "3.0" @@ -87,28 +68,16 @@ jobs: ruby-version: "2.6" - gemfile: "rails-7.2" ruby-version: "2.5" - - gemfile: "rails-7.2" - ruby-version: "jruby-9.4.3.0" - - gemfile: "rails-7.2" - ruby-version: "jruby-9.2.14.0" - - gemfile: "rails-7.2" - ruby-version: "truffleruby-22.1.0" - gemfile: "rails-7.1" ruby-version: "2.6" - gemfile: "rails-7.1" ruby-version: "2.5" - - gemfile: "rails-7.1" - ruby-version: "jruby-9.4.3.0" - - gemfile: "rails-7.1" - ruby-version: "jruby-9.2.14.0" - gemfile: "rails-7.0" ruby-version: "2.6" - gemfile: "rails-7.0" ruby-version: "2.5" - - gemfile: "rails-7.0" - ruby-version: "jruby-9.2.14.0" - gemfile: "rails-5.2" ruby-version: "3" @@ -120,12 +89,6 @@ jobs: ruby-version: "3.1" - gemfile: "rails-5.2" ruby-version: "3.0" - - gemfile: "rails-5.2" - ruby-version: "jruby-9.4.3.0" - - gemfile: "rails-5.2" - ruby-version: "truffleruby-22.1.0" - - gemfile: "rails-5.2" - ruby-version: "truffleruby-23.0.0" - gemfile: "rails-5.1" ruby-version: "3" @@ -137,12 +100,6 @@ jobs: ruby-version: "3.1" - gemfile: "rails-5.1" ruby-version: "3.0" - - gemfile: "rails-5.1" - ruby-version: "jruby-9.4.3.0" - - gemfile: "rails-5.1" - ruby-version: "truffleruby-23.0.0" - - gemfile: "rails-5.1" - ruby-version: "truffleruby-22.1.0" - gemfile: "rails-5.0" ruby-version: "3" @@ -154,12 +111,6 @@ jobs: ruby-version: "3.1" - gemfile: "rails-5.0" ruby-version: "3.0" - - gemfile: "rails-5.0" - ruby-version: "jruby-9.4.3.0" - - gemfile: "rails-5.0" - ruby-version: "truffleruby-23.0.0" - - gemfile: "rails-5.0" - ruby-version: "truffleruby-22.1.0" env: BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile From 916df5f931c12f99b614b0c2fba9c23dffaae779 Mon Sep 17 00:00:00 2001 From: Petr Heinz Date: Mon, 24 Nov 2025 22:24:02 +0100 Subject: [PATCH 2/7] skip truffleruby tests in Rails 5 --- .github/workflows/main.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 91a3b72..3a55eed 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -89,6 +89,8 @@ jobs: ruby-version: "3.1" - gemfile: "rails-5.2" ruby-version: "3.0" + - gemfile: "rails-5.2" + ruby-version: "truffleruby" - gemfile: "rails-5.1" ruby-version: "3" @@ -100,6 +102,8 @@ jobs: ruby-version: "3.1" - gemfile: "rails-5.1" ruby-version: "3.0" + - gemfile: "rails-5.1" + ruby-version: "truffleruby" - gemfile: "rails-5.0" ruby-version: "3" @@ -111,6 +115,8 @@ jobs: ruby-version: "3.1" - gemfile: "rails-5.0" ruby-version: "3.0" + - gemfile: "rails-5.0" + ruby-version: "truffleruby" env: BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile From fcca0df812fef514558be1c19e9941bc941cde58 Mon Sep 17 00:00:00 2001 From: Petr Heinz Date: Mon, 24 Nov 2025 22:54:26 +0100 Subject: [PATCH 3/7] add Rails 8.1 into CI --- .github/workflows/main.yml | 12 ++++++++++++ gemfiles/rails-8.0.gemfile | 2 +- gemfiles/rails-8.1.gemfile | 10 ++++++++++ lib/logtail-rails/active_support_log_subscriber.rb | 3 +++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100755 gemfiles/rails-8.1.gemfile diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3a55eed..a4b1d6b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,6 +28,7 @@ jobs: - "truffleruby" gemfile: - "rails-edge" + - "rails-8.1" - "rails-8.0" - "rails-7.2" - "rails-7.1" @@ -49,6 +50,17 @@ jobs: - gemfile: "rails-edge" ruby-version: "2.5" + - gemfile: "rails-8.1" + ruby-version: "3.1" + - gemfile: "rails-8.1" + ruby-version: "3.0" + - gemfile: "rails-8.1" + ruby-version: "2.7" + - gemfile: "rails-8.1" + ruby-version: "2.6" + - gemfile: "rails-8.1" + ruby-version: "2.5" + - gemfile: "rails-8.0" ruby-version: "3.1" - gemfile: "rails-8.0" diff --git a/gemfiles/rails-8.0.gemfile b/gemfiles/rails-8.0.gemfile index 4062bf4..6b3342f 100755 --- a/gemfiles/rails-8.0.gemfile +++ b/gemfiles/rails-8.0.gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -gem 'rails', '~> 8.0.0.pre' +gem 'rails', '~> 8.0.0' gem 'sidekiq', '>= 7.3.0', require: false gem 'logtail' diff --git a/gemfiles/rails-8.1.gemfile b/gemfiles/rails-8.1.gemfile new file mode 100755 index 0000000..f9657d3 --- /dev/null +++ b/gemfiles/rails-8.1.gemfile @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +gem 'rails', '~> 8.1.0' +gem 'sidekiq', '>= 7.3.0', require: false + +gem 'logtail' +gem 'logtail-rack' +gem "sqlite3", ">= 2.0" + +gemspec :path => '../' diff --git a/lib/logtail-rails/active_support_log_subscriber.rb b/lib/logtail-rails/active_support_log_subscriber.rb index 89e0c5c..7891cc9 100755 --- a/lib/logtail-rails/active_support_log_subscriber.rb +++ b/lib/logtail-rails/active_support_log_subscriber.rb @@ -26,6 +26,9 @@ def unsubscribe!(component, type) subscriber = find(component, type) if !subscriber + # In Rails 8.1+, the default log subscriber might not be attached yet + return if ::Rails::VERSION::MAJOR > 8 || (::Rails::VERSION::MAJOR == 8 && ::Rails::VERSION::MINOR >= 1) + raise "We could not find a log subscriber for #{component.inspect} of type #{type.inspect}" end From 62d3537bd1d92ad196ae90dd970713b669907f54 Mon Sep 17 00:00:00 2001 From: Petr Heinz Date: Mon, 24 Nov 2025 23:27:19 +0100 Subject: [PATCH 4/7] Benchmark not included by default in Rails 8.1, require the gem --- logtail-rails.gemspec | 1 + spec/spec_helper.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/logtail-rails.gemspec b/logtail-rails.gemspec index 8dbde08..b9c8c7b 100644 --- a/logtail-rails.gemspec +++ b/logtail-rails.gemspec @@ -39,6 +39,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency "rake", ">= 0.8" spec.add_development_dependency "rspec", "~> 3.0" + spec.add_development_dependency "benchmark", ">= 0" spec.add_development_dependency "bundler-audit", ">= 0" spec.add_development_dependency "rails_stdout_logging", ">= 0" spec.add_development_dependency "rspec-its", ">= 0" diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3bf8e10..818b16a 100755 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -6,6 +6,7 @@ require 'rspec' require 'rspec/its' require 'rspec/mocks' +require 'benchmark' # Support files, order is relevant require File.join(File.dirname(__FILE__), 'support', 'socket_hostname') From ab1dbd6f047d12d2c6fa27ea1f4e7e92f801d7a7 Mon Sep 17 00:00:00 2001 From: Petr Heinz Date: Mon, 24 Nov 2025 23:46:20 +0100 Subject: [PATCH 5/7] try to prevent mock leakage --- spec/logtail-rails/rack_logger_spec.rb | 20 ++++++++++++++------ spec/spec_helper.rb | 9 +++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/spec/logtail-rails/rack_logger_spec.rb b/spec/logtail-rails/rack_logger_spec.rb index d3a01ac..e3c2109 100755 --- a/spec/logtail-rails/rack_logger_spec.rb +++ b/spec/logtail-rails/rack_logger_spec.rb @@ -38,13 +38,21 @@ def method_for_action(action_name) it "should mute the default rails logs" do allow(::Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production")) # Rails 3.2.X - dispatch_rails_request("/rails_rack_logger") + # Disable Rails 8.1 event logging for this test to avoid extra log lines + original_enabled = Logtail::Integrations::Rails::EventLogSubscriber.enabled + Logtail::Integrations::Rails::EventLogSubscriber.enabled = false - lines = clean_lines(io.string.split("\n")) - expect(lines.length).to eq(3) - expect(lines[0]).to include("Started GET \\\"/rails_rack_logger\\\"") - expect(lines[1]).to include("Processing by RailsRackLoggerController#index as HTML") - expect(lines[2]).to include("Completed 200 OK in 0.0ms") + begin + dispatch_rails_request("/rails_rack_logger") + + lines = clean_lines(io.string.split("\n")) + expect(lines.length).to eq(3) + expect(lines[0]).to include("Started GET \\\"/rails_rack_logger\\\"") + expect(lines[1]).to include("Processing by RailsRackLoggerController#index as HTML") + expect(lines[2]).to include("Completed 200 OK in 0.0ms") + ensure + Logtail::Integrations::Rails::EventLogSubscriber.enabled = original_enabled + end end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 818b16a..7faecc6 100755 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -37,4 +37,13 @@ config.expect_with :rspec do |c| c.syntax = :expect end + + # Reset Logtail Config.instance.logger before each test to prevent mock leakage + config.before(:each) do + # Reset to default Rails logger proc to prevent mock leakage between tests + Logtail::Config.instance.logger = Proc.new { ::Rails.logger } + + # Stub EventLogSubscriber#logger to prevent mock leakage from cached instances + allow_any_instance_of(Logtail::Integrations::Rails::EventLogSubscriber).to receive(:logger).and_return(Logtail::Config.instance.logger) + end end From 72d229e0f223a364099e029198196c095ebc4833 Mon Sep 17 00:00:00 2001 From: Petr Heinz Date: Mon, 24 Nov 2025 23:58:28 +0100 Subject: [PATCH 6/7] Revert the attempt to fiw ActiveSupportLogSubscriber in Rails edge --- lib/logtail-rails/active_support_log_subscriber.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/logtail-rails/active_support_log_subscriber.rb b/lib/logtail-rails/active_support_log_subscriber.rb index 7891cc9..89e0c5c 100755 --- a/lib/logtail-rails/active_support_log_subscriber.rb +++ b/lib/logtail-rails/active_support_log_subscriber.rb @@ -26,9 +26,6 @@ def unsubscribe!(component, type) subscriber = find(component, type) if !subscriber - # In Rails 8.1+, the default log subscriber might not be attached yet - return if ::Rails::VERSION::MAJOR > 8 || (::Rails::VERSION::MAJOR == 8 && ::Rails::VERSION::MINOR >= 1) - raise "We could not find a log subscriber for #{component.inspect} of type #{type.inspect}" end From 1700341a1feb57dc802891d543089752e2c0b227 Mon Sep 17 00:00:00 2001 From: Petr Heinz Date: Mon, 24 Nov 2025 23:59:35 +0100 Subject: [PATCH 7/7] skip CI truffleruby in Rails 8.1 and above --- .github/workflows/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a4b1d6b..93f7d43 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -49,6 +49,8 @@ jobs: ruby-version: "2.6" - gemfile: "rails-edge" ruby-version: "2.5" + - gemfile: "rails-8.1" + ruby-version: "truffleruby" - gemfile: "rails-8.1" ruby-version: "3.1" @@ -60,6 +62,8 @@ jobs: ruby-version: "2.6" - gemfile: "rails-8.1" ruby-version: "2.5" + - gemfile: "rails-8.1" + ruby-version: "truffleruby" - gemfile: "rails-8.0" ruby-version: "3.1"