diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0d8af34..93f7d43 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,12 +25,10 @@ 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.1" - "rails-8.0" - "rails-7.2" - "rails-7.1" @@ -51,14 +49,21 @@ 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.1" + ruby-version: "truffleruby" + + - 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.1" + ruby-version: "truffleruby" - gemfile: "rails-8.0" ruby-version: "3.1" @@ -70,14 +75,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 +84,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" @@ -121,11 +106,7 @@ jobs: - 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" + ruby-version: "truffleruby" - gemfile: "rails-5.1" ruby-version: "3" @@ -138,11 +119,7 @@ jobs: - 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" + ruby-version: "truffleruby" - gemfile: "rails-5.0" ruby-version: "3" @@ -155,11 +132,7 @@ jobs: - 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" + ruby-version: "truffleruby" env: BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile 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/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/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 3bf8e10..7faecc6 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') @@ -36,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