From f5e2a330953f02e0b1ae90fdbcea9af6b2d94f55 Mon Sep 17 00:00:00 2001 From: Brian Shand Date: Tue, 21 Oct 2025 21:40:25 +0100 Subject: [PATCH] Support Ruby 3.4. Drop support for Rails 7.0, Ruby 3.1 --- .github/workflows/test.yml | 4 ++-- CHANGELOG.md | 3 ++- gemfiles/Gemfile.rails70 | 13 ------------- lib/ndr_browser_timings/recorders/logger.rb | 7 ++++++- ndr_browser_timings.gemspec | 4 ++-- 5 files changed, 12 insertions(+), 19 deletions(-) delete mode 100644 gemfiles/Gemfile.rails70 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cbf022d..38ce759 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,13 +5,13 @@ on: [push] jobs: test: strategy: + fail-fast: false matrix: ruby-version: - - '3.1' - '3.2' - '3.3' + - '3.4' gemfile: - - gemfiles/Gemfile.rails70 - gemfiles/Gemfile.rails71 - gemfiles/Gemfile.rails72 - gemfiles/Gemfile.rails80 diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c80b32..57c672d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## [Unreleased] -* no unreleased changes +### Fixed +* Support Ruby 3.4. Drop support for Rails 7.0, Ruby 3.1 ## 0.4.3 / 2024-11-19 ### Added diff --git a/gemfiles/Gemfile.rails70 b/gemfiles/Gemfile.rails70 deleted file mode 100644 index 0f44cef..0000000 --- a/gemfiles/Gemfile.rails70 +++ /dev/null @@ -1,13 +0,0 @@ -source 'https://rubygems.org' - -gemspec path: '..' - -gem 'activerecord', '~> 7.0.0' -gem 'activesupport', '~> 7.0.0' - -# Rails 7.0 does not support sqlite3 2.x; it specifies gem "sqlite3", "~> 1.4" -# in lib/active_record/connection_adapters/sqlite3_adapter.rb -gem 'sqlite3', '~> 1.7' - -# Latest concurrent-ruby breaks Rails < 7.1. See https://github.com/rails/rails/issues/54260 -gem 'concurrent-ruby', '1.3.4' diff --git a/lib/ndr_browser_timings/recorders/logger.rb b/lib/ndr_browser_timings/recorders/logger.rb index 71c8f7e..1b7d08b 100644 --- a/lib/ndr_browser_timings/recorders/logger.rb +++ b/lib/ndr_browser_timings/recorders/logger.rb @@ -3,7 +3,12 @@ module Recorders # Allows timing information to be recorded via the application log. class Logger def call(timing) - Rails.logger.info "NdrBrowserTimings #{timing.tags} #{timing.timeline}" + # Ensure consistent log format, even though Hash#to_s changed in ruby 3.4 + format_hash = lambda do |hash| + format('{%s}', + entries: hash.collect { |k, v| "#{k.inspect}=>#{v.inspect}" }.join(', ')) + end + Rails.logger.info "NdrBrowserTimings #{format_hash.call(timing.tags)} #{format_hash.call(timing.timeline)}" end end end diff --git a/ndr_browser_timings.gemspec b/ndr_browser_timings.gemspec index ee81a8a..e44a7ee 100644 --- a/ndr_browser_timings.gemspec +++ b/ndr_browser_timings.gemspec @@ -16,9 +16,9 @@ Gem::Specification.new do |spec| spec.files = `git ls-files -z`.split("\x0"). select { |f| gem_files.include?(f.split('/')[0]) } - spec.add_dependency 'rails', '>= 7.0', '< 8.1' + spec.add_dependency 'rails', '>= 7.1', '< 8.1' - spec.required_ruby_version = '>= 3.1.0' + spec.required_ruby_version = '>= 3.2.0' spec.add_development_dependency 'mocha' spec.add_development_dependency 'ndr_dev_support', '>= 6.0'