From 7f8513d032d0df88cbe02139df168e2118dc1ce7 Mon Sep 17 00:00:00 2001 From: Mauricio Gomes Date: Sat, 18 Oct 2025 16:01:27 -0400 Subject: [PATCH] Add Rails 8 and modern rubies. Drop Rails 6 support. --- .github/workflows/main.yml | 23 +++++-------------- .rubocop.yml | 2 +- Appraisals | 20 ++++++---------- CHANGELOG.md | 20 ++++++++++++++++ api_auth.gemspec | 22 ++++++++---------- gemfiles/rails_61.gemfile | 9 -------- .../{rails_70.gemfile => rails_7.gemfile} | 4 ++-- .../{rails_60.gemfile => rails_8.gemfile} | 6 ++--- lib/api_auth/base.rb | 2 +- spec/spec_helper.rb | 6 +---- 10 files changed, 51 insertions(+), 63 deletions(-) delete mode 100644 gemfiles/rails_61.gemfile rename gemfiles/{rails_70.gemfile => rails_7.gemfile} (68%) rename gemfiles/{rails_60.gemfile => rails_8.gemfile} (51%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a7f15c8..dfbdf05 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,23 +9,12 @@ jobs: fail-fast: true matrix: ruby-version: - - 2.6 - - 2.7 - - 3.0 - - 3.1 + - 3.2 + - 3.3 + - 3.4 gemfile: - - rails_60.gemfile - - rails_61.gemfile - - rails_70.gemfile - exclude: - - ruby-version: 3.0 - gemfile: rails_60.gemfile - - ruby-version: 3.1 - gemfile: rails_60.gemfile - - ruby-version: 2.6 - gemfile: rails_70.gemfile - - ruby-version: 2.7 - gemfile: rails_70.gemfile + - rails_7.gemfile + - rails_8.gemfile steps: - name: Install packages required for `curb` gem run: | @@ -61,7 +50,7 @@ jobs: - name: Install Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3.1 + ruby-version: 3.3 bundler-cache: true - name: Install required gems diff --git a/.rubocop.yml b/.rubocop.yml index ba42f36..fe5380c 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,7 +2,7 @@ inherit_from: .rubocop_todo.yml AllCops: NewCops: enable - TargetRubyVersion: 2.6 + TargetRubyVersion: 3.2 Metrics/AbcSize: Max: 28 diff --git a/Appraisals b/Appraisals index efc2704..6cb9e86 100644 --- a/Appraisals +++ b/Appraisals @@ -1,17 +1,11 @@ -appraise 'rails-60' do - gem 'actionpack', '~> 6.0' - gem 'activeresource', '~> 5.1' - gem 'activesupport', '~> 6.0' -end - -appraise 'rails-61' do - gem 'actionpack', '~> 6.1' - gem 'activeresource', '~> 5.1' - gem 'activesupport', '~> 6.1' +appraise 'rails-7' do + gem 'actionpack', '~> 7.2' + gem 'activeresource', '~> 6.0' + gem 'activesupport', '~> 7.2' end -appraise 'rails-70' do - gem 'actionpack', '~> 7.0' +appraise 'rails-8' do + gem 'actionpack', '~> 8.0' gem 'activeresource', '~> 6.0' - gem 'activesupport', '~> 7.0' + gem 'activesupport', '~> 8.0' end diff --git a/CHANGELOG.md b/CHANGELOG.md index b1dd4d7..2b4b6b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ +# 3.0.0 (Unreleased) + +## Breaking Changes +- **Drop support for Ruby < 3.2** - Now requires Ruby 3.2, 3.3, or 3.4+ +- **Drop support for Rails 6.x** - Now requires Rails 7.2+ or 8.0+ +- **Remove deprecated Ruby 2.x compatibility code** + +## Improvements +- Update minimum Ruby version to 3.2 +- Update minimum Rails version to 7.2 +- Support Rails 8.0 +- Remove explicit drb dependency (now provided by Rails 7.2+) +- Update development dependencies to latest versions: + - Faraday ~> 2.0 + - HTTP ~> 5.0 + - HTTPi ~> 4.0 + - RSpec ~> 3.13 + - Rake ~> 13.0 + - Rest-Client ~> 2.1 + # 2.6.0 (2025-01-18) - Add Faraday middleware support (#1322051 Frédéric Mangano) - Add MD5 compatibility option in authentic? method (#a618e15 Samir ALI CHERIF) diff --git a/api_auth.gemspec b/api_auth.gemspec index b61527d..8f5a6dc 100644 --- a/api_auth.gemspec +++ b/api_auth.gemspec @@ -14,26 +14,24 @@ Gem::Specification.new do |s| 'rubygems_mfa_required' => 'true' } - s.required_ruby_version = '>= 2.6.0' + s.required_ruby_version = '>= 3.2.0' - s.add_development_dependency 'actionpack', '>= 6.0' - s.add_development_dependency 'activeresource', '>= 4.0' - s.add_development_dependency 'activesupport', '>= 6.0' + s.add_development_dependency 'actionpack', '>= 7.2' + s.add_development_dependency 'activeresource', '>= 6.0' + s.add_development_dependency 'activesupport', '>= 7.2' s.add_development_dependency 'amatch' s.add_development_dependency 'appraisal' s.add_development_dependency 'curb', '~> 1.0' - # DRb is required for Ruby 3.4+ but must avoid 2.0.6 which breaks Ruby 2.6 - s.add_development_dependency 'drb', '>= 2.0.4', '< 2.0.6' - s.add_development_dependency 'faraday', '>= 1.1.0' + s.add_development_dependency 'faraday', '~> 2.0' s.add_development_dependency 'grape', '~> 2.0' - s.add_development_dependency 'http' - s.add_development_dependency 'httpi' + s.add_development_dependency 'http', '~> 5.0' + s.add_development_dependency 'httpi', '~> 4.0' s.add_development_dependency 'multipart-post', '~> 2.0' s.add_development_dependency 'pry' - s.add_development_dependency 'rake' - s.add_development_dependency 'rest-client', '~> 2.0' + s.add_development_dependency 'rake', '~> 13.0' + s.add_development_dependency 'rest-client', '~> 2.1' s.add_development_dependency 'rexml' - s.add_development_dependency 'rspec', '~> 3.4' + s.add_development_dependency 'rspec', '~> 3.13' s.add_development_dependency 'rubocop', '~> 1.50' s.files = `git ls-files`.split("\n") diff --git a/gemfiles/rails_61.gemfile b/gemfiles/rails_61.gemfile deleted file mode 100644 index c9ae65f..0000000 --- a/gemfiles/rails_61.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "https://rubygems.org" - -gem "actionpack", "~> 6.1" -gem "activeresource", "~> 5.1" -gem "activesupport", "~> 6.1" - -gemspec path: "../" diff --git a/gemfiles/rails_70.gemfile b/gemfiles/rails_7.gemfile similarity index 68% rename from gemfiles/rails_70.gemfile rename to gemfiles/rails_7.gemfile index 708ba05..4af971d 100644 --- a/gemfiles/rails_70.gemfile +++ b/gemfiles/rails_7.gemfile @@ -2,8 +2,8 @@ source "https://rubygems.org" -gem "actionpack", "~> 7.0" +gem "actionpack", "~> 7.2" gem "activeresource", "~> 6.0" -gem "activesupport", "~> 7.0" +gem "activesupport", "~> 7.2" gemspec path: "../" diff --git a/gemfiles/rails_60.gemfile b/gemfiles/rails_8.gemfile similarity index 51% rename from gemfiles/rails_60.gemfile rename to gemfiles/rails_8.gemfile index cac09e4..fc7a56a 100644 --- a/gemfiles/rails_60.gemfile +++ b/gemfiles/rails_8.gemfile @@ -2,8 +2,8 @@ source "https://rubygems.org" -gem "actionpack", "~> 6.0" -gem "activeresource", "~> 5.1" -gem "activesupport", "~> 6.0" +gem "actionpack", "~> 8.0" +gem "activeresource", "~> 6.0" +gem "activesupport", "~> 8.0" gemspec path: "../" diff --git a/lib/api_auth/base.rb b/lib/api_auth/base.rb index 14f7a82..a69af2d 100644 --- a/lib/api_auth/base.rb +++ b/lib/api_auth/base.rb @@ -71,7 +71,7 @@ def generate_secret_key private - AUTH_HEADER_PATTERN = /APIAuth(?:-HMAC-(MD5|SHA(?:1|224|256|384|512)?))? ([^:]+):(.+)$/.freeze + AUTH_HEADER_PATTERN = /APIAuth(?:-HMAC-(MD5|SHA(?:1|224|256|384|512)?))? ([^:]+):(.+)$/ def request_within_time_window?(headers, clock_skew) Time.httpdate(headers.timestamp).utc > (Time.now.utc - clock_skew) && diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index d40a007..caaa2b4 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,10 +2,6 @@ $LOAD_PATH.unshift(File.dirname(__FILE__)) require 'rspec' -# Fix for Rails 6.1 compatibility issue -# ActiveSupport 6.1 expects Logger to be available in the global namespace -require 'logger' - require 'active_support' require 'active_support/core_ext/numeric/time' require 'action_controller' @@ -25,4 +21,4 @@ # Requires supporting files with custom matchers and macros, etc, # in ./support/ and its subdirectories. -Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].sort.each { |f| require f } +Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }