Drop Rails 5.2 support
This commit is contained in:
parent
9b0fb3a50b
commit
feed41cb8a
|
@ -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 }}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue