From 9e2a0ff237ef0d7893fe6e0b34f02d143019e38d Mon Sep 17 00:00:00 2001 From: Daniel O'Connor Date: Wed, 24 Jun 2026 14:23:43 +0000 Subject: [PATCH 1/3] Remove Rails versions less than 6 --- .github/workflows/ruby.yml | 15 +-------------- jsonapi-resources.gemspec | 2 +- lib/jsonapi-resources.rb | 6 +----- .../adapters/join_left_active_record_adapter.rb | 14 +++----------- lib/jsonapi/active_relation_resource.rb | 6 +----- .../join_manager_test.rb | 6 +----- 6 files changed, 8 insertions(+), 41 deletions(-) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index aeb9b1ae9..32cea4b18 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -35,8 +35,6 @@ jobs: - 7.0.4 - 6.1.7 - 6.0.6 - - 5.2.8.1 - - 5.1.7 database_url: - postgresql://postgres:password@localhost:5432/test - sqlite3:test_db @@ -45,24 +43,13 @@ jobs: rails: 6.0.6 - ruby: 3.2 rails: 5.2.8.1 - - ruby: 3.2 - rails: 5.1.7 - ruby: 3.1 rails: 6.0.6 - - ruby: 3.1 - rails: 5.2.8.1 - - ruby: 3.1 - rails: 5.1.7 - ruby: '3.0' rails: 6.0.6 - - ruby: '3.0' - rails: 5.2.8.1 - - ruby: '3.0' - rails: 5.1.7 - ruby: 2.6 rails: 7.0.4 - - database_url: postgresql://postgres:password@localhost:5432/test - rails: 5.1.7 + env: RAILS_VERSION: ${{ matrix.rails }} DATABASE_URL: ${{ matrix.database_url }} diff --git a/jsonapi-resources.gemspec b/jsonapi-resources.gemspec index eb3c67fa5..127180ea8 100644 --- a/jsonapi-resources.gemspec +++ b/jsonapi-resources.gemspec @@ -27,7 +27,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'pry' spec.add_development_dependency 'concurrent-ruby-ext' spec.add_development_dependency 'database_cleaner' - spec.add_dependency 'activerecord', '>= 5.1' + spec.add_dependency 'activerecord', '>= 6.0' spec.add_dependency 'railties', '>= 5.1' spec.add_dependency 'concurrent-ruby' end diff --git a/lib/jsonapi-resources.rb b/lib/jsonapi-resources.rb index 401d9bbc7..5864eee89 100644 --- a/lib/jsonapi-resources.rb +++ b/lib/jsonapi-resources.rb @@ -9,11 +9,7 @@ require 'jsonapi/cached_response_fragment' require 'jsonapi/response_document' require 'jsonapi/acts_as_resource_controller' -if Rails::VERSION::MAJOR >= 6 - ActiveSupport.on_load(:action_controller_base) do - require 'jsonapi/resource_controller' - end -else +ActiveSupport.on_load(:action_controller_base) do require 'jsonapi/resource_controller' end require 'jsonapi/resource_controller_metal' diff --git a/lib/jsonapi/active_relation/adapters/join_left_active_record_adapter.rb b/lib/jsonapi/active_relation/adapters/join_left_active_record_adapter.rb index a9a0bb8a0..9e19a32ef 100644 --- a/lib/jsonapi/active_relation/adapters/join_left_active_record_adapter.rb +++ b/lib/jsonapi/active_relation/adapters/join_left_active_record_adapter.rb @@ -2,18 +2,10 @@ module JSONAPI module ActiveRelation module Adapters module JoinLeftActiveRecordAdapter - # Extends left_joins functionality to rails 4, and uses the same logic for rails 5.0.x and 5.1.x - # The default left_joins logic of rails 5.2.x is used. This results in and extra join in some cases. For - # example Post.joins(:comments).joins_left(comments: :author) will join the comments table twice, - # once inner and once left in 5.2, but only as inner in earlier versions. + # DEPRECATED - simply use `left_joins`` def joins_left(*columns) - if Rails::VERSION::MAJOR >= 6 || (Rails::VERSION::MAJOR >= 5 && ActiveRecord::VERSION::MINOR >= 2) - left_joins(columns) - else - join_dependency = ActiveRecord::Associations::JoinDependency.new(self, columns, []) - joins(join_dependency) - end - end + left_joins(columns) + end alias_method :join_left, :joins_left end diff --git a/lib/jsonapi/active_relation_resource.rb b/lib/jsonapi/active_relation_resource.rb index 581ed1e02..68c03829f 100644 --- a/lib/jsonapi/active_relation_resource.rb +++ b/lib/jsonapi/active_relation_resource.rb @@ -772,11 +772,7 @@ def apply_single_sort(records, field, direction, options) # Assumes ActiveRecord's counting. Override if you need a different counting method def count_records(records) - if (Rails::VERSION::MAJOR == 5 && ActiveRecord::VERSION::MINOR >= 1) || Rails::VERSION::MAJOR >= 6 - records.count(:all) - else - records.count - end + records.count(:all) end def filter_records(records, filters, options) diff --git a/test/unit/active_relation_resource_finder/join_manager_test.rb b/test/unit/active_relation_resource_finder/join_manager_test.rb index 840c90ee2..621fcab6e 100644 --- a/test/unit/active_relation_resource_finder/join_manager_test.rb +++ b/test/unit/active_relation_resource_finder/join_manager_test.rb @@ -6,11 +6,7 @@ class JoinTreeTest < ActiveSupport::TestCase def db_true case ActiveRecord::Base.connection.adapter_name when 'SQLite' - if Rails::VERSION::MAJOR >= 6 || (Rails::VERSION::MAJOR >= 5 && ActiveRecord::VERSION::MINOR >= 2) - "1" - else - "'t'" - end + "1" when 'PostgreSQL' 'TRUE' end From ad9cdc0efee30c4c08d15d0eb9a064bb5519a264 Mon Sep 17 00:00:00 2001 From: Daniel O'Connor Date: Wed, 24 Jun 2026 14:26:30 +0000 Subject: [PATCH 2/3] Deprecate joins_left --- .../adapters/join_left_active_record_adapter.rb | 2 +- lib/jsonapi/active_relation_resource.rb | 4 ++-- test/fixtures/active_record.rb | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/jsonapi/active_relation/adapters/join_left_active_record_adapter.rb b/lib/jsonapi/active_relation/adapters/join_left_active_record_adapter.rb index 9e19a32ef..de0442bd7 100644 --- a/lib/jsonapi/active_relation/adapters/join_left_active_record_adapter.rb +++ b/lib/jsonapi/active_relation/adapters/join_left_active_record_adapter.rb @@ -2,8 +2,8 @@ module JSONAPI module ActiveRelation module Adapters module JoinLeftActiveRecordAdapter - # DEPRECATED - simply use `left_joins`` def joins_left(*columns) + ActiveSupport::Deprecation.warn "Prefer `left_joins`, JSONAPI::ActiveRelation::Adapters::JoinLeftActiveRecordAdapter will be removed in a future release" left_joins(columns) end diff --git a/lib/jsonapi/active_relation_resource.rb b/lib/jsonapi/active_relation_resource.rb index 68c03829f..394f59cab 100644 --- a/lib/jsonapi/active_relation_resource.rb +++ b/lib/jsonapi/active_relation_resource.rb @@ -329,7 +329,7 @@ def apply_join(records:, relationship:, resource_type:, join_type:, options:) when :inner records = records.joins(resource_type.to_s.singularize.to_sym) when :left - records = records.joins_left(resource_type.to_s.singularize.to_sym) + records = records.left_joins(resource_type.to_s.singularize.to_sym) end else relation_name = relationship.relation_name(options) @@ -337,7 +337,7 @@ def apply_join(records:, relationship:, resource_type:, join_type:, options:) when :inner records = records.joins(relation_name) when :left - records = records.joins_left(relation_name) + records = records.left_joins(relation_name) end end records diff --git a/test/fixtures/active_record.rb b/test/fixtures/active_record.rb index f89593178..21ffeffc3 100644 --- a/test/fixtures/active_record.rb +++ b/test/fixtures/active_record.rb @@ -2319,7 +2319,7 @@ class PostResource < PostResource when :inner records = records.joins(relationship.relation_name(options)) when :left - records = records.joins_left(relationship.relation_name(options)) + records = records.left_joins(relationship.relation_name(options)) end records.where(comments: {approved: true}) } @@ -2369,7 +2369,7 @@ class PostResource < PostResource when :inner records = records.joins(relationship.relation_name(options)) when :left - records = records.joins_left(relationship.relation_name(options)) + records = records.left_joins(relationship.relation_name(options)) end records.where(comments: {approved: true}) } From 016570a7917482a7fe0acc7f6a736cc09548ab1d Mon Sep 17 00:00:00 2001 From: Daniel O'Connor Date: Wed, 24 Jun 2026 14:38:26 +0000 Subject: [PATCH 3/3] Remove legacy sqlite3 for rails 5 --- Gemfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 2535d0200..ec4f59e14 100644 --- a/Gemfile +++ b/Gemfile @@ -11,11 +11,7 @@ version = ENV['RAILS_VERSION'] || 'default' platforms :ruby do gem 'pg' - if version.start_with?('4.2', '5.0') - gem 'sqlite3', '~> 1.3.13' - else - gem 'sqlite3', '~> 1.4' - end + gem 'sqlite3', '~> 1.4' end case version