Drop Rails 5.2 support

This commit is contained in:
David Rodríguez 2022-03-04 13:58:28 +01:00
parent 9b0fb3a50b
commit feed41cb8a
No known key found for this signature in database
GPG Key ID: 1008A258BB37309C
10 changed files with 36 additions and 135 deletions

View File

@ -15,8 +15,6 @@ jobs:
- v6.1.4
- v6.0.4
- 6-0-stable
- 5-2-stable
- v5.2.4
ruby:
- 3.0.2
- 2.7.4
@ -24,10 +22,6 @@ jobs:
exclude:
- rails: v7.0.0
ruby: 2.6.7
- rails: v5.2.4
ruby: 3.0.2
- rails: 5-2-stable
ruby: 3.0.2
env:
DB: sqlite3
RAILS: ${{ matrix.rails }}
@ -52,8 +46,6 @@ jobs:
- v6.1.4
- v6.0.4
- 6-0-stable
- 5-2-stable
- v5.2.4
ruby:
- 3.0.2
- 2.7.4
@ -61,10 +53,6 @@ jobs:
exclude:
- rails: v7.0.0
ruby: 2.6.7
- rails: v5.2.4
ruby: 3.0.2
- rails: 5-2-stable
ruby: 3.0.2
env:
DB: mysql
RAILS: ${{ matrix.rails }}
@ -98,8 +86,6 @@ jobs:
- v6.1.4
- v6.0.4
- 6-0-stable
- 5-2-stable
- v5.2.4
ruby:
- 3.0.2
- 2.7.4
@ -107,10 +93,6 @@ jobs:
exclude:
- rails: v7.0.0
ruby: 2.6.7
- rails: v5.2.4
ruby: 3.0.2
- rails: 5-2-stable
ruby: 3.0.2
env:
DB: postgres
RAILS: ${{ matrix.rails }}

View File

@ -64,7 +64,7 @@ Here's a quick guide:
2. Create a thoughtfully-named branch for your changes (`git checkout -b my-new-feature`).
3. Install the development dependencies by running `bundle install`.
To install rails other than latest (set in Gemfile): `RAILS='5-2-stable' bundle install`
To install rails other than latest (set in Gemfile): `RAILS='6-0-stable' bundle install`
4. Begin by running the tests. We only take pull requests with passing tests,
and it's great to know that you have a clean slate:

View File

@ -15,7 +15,7 @@ or controller layer, you're probably not looking for Ransack.
## Getting started
Ransack is supported for Rails 7.0, 6.x, 5.2 on Ruby 2.6.6 and later.
Ransack is supported for Rails 7.0, 6.x on Ruby 2.6.6 and later.
In your Gemfile, for the last officially released gem:

View File

@ -1,20 +0,0 @@
module Polyamorous
module JoinAssociationExtensions
include SwappingReflectionClass
def self.prepended(base)
base.class_eval { attr_reader :join_type }
end
def initialize(reflection, children, polymorphic_class = nil, join_type = Arel::Nodes::InnerJoin)
@join_type = join_type
if polymorphic_class && ::ActiveRecord::Base > polymorphic_class
swapping_reflection_klass(reflection, polymorphic_class) do |reflection|
super(reflection, children)
self.reflection.options[:polymorphic] = true
end
else
super(reflection, children)
end
end
end
end

View File

@ -1,79 +0,0 @@
module Polyamorous
module JoinDependencyExtensions
# Replaces ActiveRecord::Associations::JoinDependency#build
def build(associations, base_klass)
associations.map do |name, right|
if name.is_a? Join
reflection = find_reflection base_klass, name.name
reflection.check_validity!
reflection.check_eager_loadable!
klass = if reflection.polymorphic?
name.klass || base_klass
else
reflection.klass
end
JoinAssociation.new(reflection, build(right, klass), name.klass, name.type)
else
reflection = find_reflection base_klass, name
reflection.check_validity!
reflection.check_eager_loadable!
if reflection.polymorphic?
raise ActiveRecord::EagerLoadPolymorphicError.new(reflection)
end
JoinAssociation.new(reflection, build(right, reflection.klass))
end
end
end
def join_constraints(joins_to_add, join_type, alias_tracker)
@alias_tracker = alias_tracker
construct_tables!(join_root)
joins = make_join_constraints(join_root, join_type)
joins.concat joins_to_add.flat_map { |oj|
construct_tables!(oj.join_root)
if join_root.match?(oj.join_root) && join_root.table.name == oj.join_root.table.name
walk join_root, oj.join_root
else
make_join_constraints(oj.join_root, join_type)
end
}
end
private
def make_constraints(parent, child, join_type = Arel::Nodes::OuterJoin)
foreign_table = parent.table
foreign_klass = parent.base_klass
join_type = child.join_type || join_type if join_type == Arel::Nodes::InnerJoin
joins = child.join_constraints(foreign_table, foreign_klass, join_type, alias_tracker)
joins.concat child.children.flat_map { |c| make_constraints(child, c, join_type) }
end
module ClassMethods
# Prepended before ActiveRecord::Associations::JoinDependency#walk_tree
#
def walk_tree(associations, hash)
case associations
when TreeNode
associations.add_to_tree(hash)
when Hash
associations.each do |k, v|
cache =
if TreeNode === k
k.add_to_tree(hash)
else
hash[k] ||= {}
end
walk_tree(v, cache)
end
else
super(associations, hash)
end
end
end
end
end

View File

@ -1,11 +0,0 @@
module Polyamorous
module ReflectionExtensions
def join_scope(table, foreign_table, foreign_klass)
if respond_to?(:polymorphic?) && polymorphic?
super.where!(foreign_table[foreign_type].eq(klass.name))
else
super
end
end
end
end

View File

@ -1 +1,20 @@
require 'polyamorous/activerecord_5.2_ruby_2/join_association'
module Polyamorous
module JoinAssociationExtensions
include SwappingReflectionClass
def self.prepended(base)
base.class_eval { attr_reader :join_type }
end
def initialize(reflection, children, polymorphic_class = nil, join_type = Arel::Nodes::InnerJoin)
@join_type = join_type
if polymorphic_class && ::ActiveRecord::Base > polymorphic_class
swapping_reflection_klass(reflection, polymorphic_class) do |reflection|
super(reflection, children)
self.reflection.options[:polymorphic] = true
end
else
super(reflection, children)
end
end
end
end

View File

@ -1 +1,11 @@
require 'polyamorous/activerecord_5.2_ruby_2/reflection'
module Polyamorous
module ReflectionExtensions
def join_scope(table, foreign_table, foreign_klass)
if respond_to?(:polymorphic?) && polymorphic?
super.where!(foreign_table[foreign_type].eq(klass.name))
else
super
end
end
end
end

View File

@ -54,7 +54,7 @@ module Ransack
if predicate.respond_to?(:value)
predicate.value # Rails 6.1
elsif predicate.respond_to?(:val)
predicate.val # Rails 5.2, 6.0
predicate.val # Rails 6.0
end
end

View File

@ -15,8 +15,8 @@ Gem::Specification.new do |s|
s.required_ruby_version = '>= 2.6'
s.license = 'MIT'
s.add_dependency 'activerecord', '>= 5.2.4'
s.add_dependency 'activesupport', '>= 5.2.4'
s.add_dependency 'activerecord', '>= 6.0.4'
s.add_dependency 'activesupport', '>= 6.0.4'
s.add_dependency 'i18n'
s.files = `git ls-files`.split("\n")