baby_squeel 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e317da76921bc04f342b3cd1f219fa6585f642c4b96e936a18a442a1eb51c18b
4
- data.tar.gz: 6a25d3d64d518f5b43124b4dd9083636f10ac0fad1e0ba4e9634f0dded17cb23
3
+ metadata.gz: 763bb8a79bfc992f8fd3dfab9f6fd10075ad6ebdc10a1c1c6136f7b41be96805
4
+ data.tar.gz: d895cddcf544c0c04b02908b8bb8423fdb378d132df6454766e4770973b82abc
5
5
  SHA512:
6
- metadata.gz: f1bcaadbb4fc5894a5cd1e4c797ac3d6cfbbaee0cad994caf360fc2ac347f9a30019c297bcd254cae7642574b56bd22d927ea492bad76be02905379847af5330
7
- data.tar.gz: 012e06a95f564e7502a4aa73a5629969f82e76a4abf475fa7364f25891f3345710334848313d6c3fc4c3842da29c5fc3220d95d58a1829258445886be8ac143e
6
+ metadata.gz: 3034a5daf5a2473fdeab546af7501fba5840e57977b802448fa3d976933ba17745e79511291156105f5da1ee748a5fe597084cdeade003c9df49850c6d387383
7
+ data.tar.gz: b506444e62ef4c58aead98f1c6d3a8a201b6dc47f9d3245129c492520ff6541e248f7b7463b4407e9125683199cc4396f696973e78ea19fd5ba4bf0a31459e4c
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [3.0.0] - 2023-11-20
4
+
5
+ - Added support for ActiveRecord 7.1 (#125)
6
+ - Added support for Ruby 3.2 (#128)
7
+ - Updated ransack to 4.1. (#126)
8
+ - Droped support for Ruby 2.6 and 2.7. (#126)
9
+ - Droped support for ActiveRecord 6.0. (#126)
10
+
11
+ ## [2.0.0] - 2022-08-28
12
+
3
13
  - AR 6.1: fix - FrozenError: can't modify frozen object: []
4
14
  - Drop support for ActiveRecord older than 6.0.
5
15
 
@@ -234,7 +244,9 @@
234
244
 
235
245
  - Initial support for selects, orders, wheres, and joins.
236
246
 
237
- [unreleased]: https://github.com/rzane/baby_squeel/compare/v1.4.4...HEAD
247
+ [unreleased]: https://github.com/rzane/baby_squeel/compare/v3.0.0...HEAD
248
+ [3.0.0]: https://github.com/rzane/baby_squeel/compare/v2.0.0...v3.0.0
249
+ [2.0.0]: https://github.com/rzane/baby_squeel/compare/v1.4.4...v2.0.0
238
250
  [1.4.4]: https://github.com/rzane/baby_squeel/compare/v1.4.3...v1.4.4
239
251
  [1.4.3]: https://github.com/rzane/baby_squeel/compare/v1.4.2...v1.4.3
240
252
  [1.4.2]: https://github.com/rzane/baby_squeel/compare/v1.4.1...v1.4.2
data/ISSUE_TEMPLATE.md CHANGED
@@ -11,7 +11,7 @@ require 'minitest/autorun'
11
11
 
12
12
  gemfile true do
13
13
  source 'https://rubygems.org'
14
- gem 'activerecord', '~> 6.0.0' # which Active Record version?
14
+ gem 'activerecord', '~> 7.0.0' # which Active Record version?
15
15
  gem 'sqlite3'
16
16
  gem 'baby_squeel', github: 'rzane/baby_squeel'
17
17
  end
data/baby_squeel.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ['Ray Zane']
10
10
  spec.email = ['ray@promptworks.com']
11
11
 
12
- spec.summary = 'An expressive query DSL for Active Record 4 and 5.'
12
+ spec.summary = 'An expressive query DSL for Active Record 6+'
13
13
  spec.description = spec.summary
14
14
  spec.homepage = 'https://github.com/rzane/baby_squeel'
15
15
  spec.license = 'MIT'
@@ -19,8 +19,8 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.files = Dir.glob('{lib/**/*,*.{md,txt,gemspec}}')
21
21
 
22
- spec.add_dependency 'activerecord', '>= 6.0', '< 7.1'
23
- spec.add_dependency 'ransack', '~> 2.3'
22
+ spec.add_dependency 'activerecord', '>= 6.1.5', '< 7.2'
23
+ spec.add_dependency 'ransack', '~> 4.1'
24
24
 
25
25
  spec.add_development_dependency 'bundler', '~> 2'
26
26
  spec.add_development_dependency 'rake', '~> 13.0'
@@ -51,34 +51,22 @@ module BabySqueel
51
51
  having DSL.evaluate(self, &block)
52
52
  end
53
53
 
54
- if BabySqueel::ActiveRecord::VersionHelper.at_least_6_1?
55
- def construct_join_dependency(associations, join_type)
56
- result = super(associations, join_type)
57
- if associations.any? { |assoc| assoc.is_a?(BabySqueel::Join) }
58
- result.extend(BabySqueel::JoinDependency::Injector6_1)
59
- end
60
- result
54
+ def construct_join_dependency(associations, join_type)
55
+ result = super(associations, join_type)
56
+ if associations.any? { |assoc| assoc.is_a?(BabySqueel::Join) }
57
+ result.extend(BabySqueel::JoinDependency::Injector6_1)
61
58
  end
59
+ result
60
+ end
62
61
 
63
- private
64
-
65
- # https://github.com/rails/rails/commit/c0c53ee9d28134757cf1418521cb97c4a135f140
66
- def select_association_list(*args)
67
- if args[0].any? { |join| join.is_a?(BabySqueel::Join) }
68
- args[0].extend(BabySqueel::ActiveRecord::QueryMethods::Injector6_1)
69
- end
70
- super *args
71
- end
72
- else
73
- private
62
+ private
74
63
 
75
- # Active Record will call `each` on the `joins`. The
76
- # Injector has a custom `each` method that handles
77
- # BabySqueel::Join nodes.
78
- def build_joins(*args)
79
- args[1] = BabySqueel::JoinDependency::Injector6_0.new(args.second)
80
- super(*args)
64
+ # https://github.com/rails/rails/commit/c0c53ee9d28134757cf1418521cb97c4a135f140
65
+ def select_association_list(*args)
66
+ if args[0].any? { |join| join.is_a?(BabySqueel::Join) }
67
+ args[0].extend(BabySqueel::ActiveRecord::QueryMethods::Injector6_1)
81
68
  end
69
+ super *args
82
70
  end
83
71
  end
84
72
  end
@@ -3,10 +3,13 @@ require 'baby_squeel/dsl'
3
3
  module BabySqueel
4
4
  module ActiveRecord
5
5
  class VersionHelper
6
- def self.at_least_6_1?
7
- ::ActiveRecord::VERSION::MAJOR > 6 ||
8
- ::ActiveRecord::VERSION::MAJOR == 6 && ::ActiveRecord::VERSION::MINOR >= 1
9
- end
6
+ # Example
7
+ # BabySqueel::ActiveRecord::VersionHelper.at_least_7_1?
8
+ #
9
+ # def self.at_least_7_1?
10
+ # ::ActiveRecord::VERSION::MAJOR > 7 ||
11
+ # ::ActiveRecord::VERSION::MAJOR == 7 && ::ActiveRecord::VERSION::MINOR >= 1
12
+ # end
10
13
  end
11
14
  end
12
15
  end
@@ -100,13 +100,7 @@ module BabySqueel
100
100
  def build_where_clause(other)
101
101
  if valid_where_clause?(other)
102
102
  relation = @parent._scope.all
103
-
104
- if BabySqueel::ActiveRecord::VersionHelper.at_least_6_1?
105
- relation.send(:build_where_clause, { _reflection.name => other }, [])
106
- else
107
- factory = relation.send(:where_clause_factory)
108
- factory.build({ _reflection.name => other }, [])
109
- end
103
+ relation.send(:build_where_clause, { _reflection.name => other }, [])
110
104
  else
111
105
  raise AssociationComparisonError.new(_reflection.name, other)
112
106
  end
@@ -46,20 +46,13 @@ module BabySqueel
46
46
  # a list (in order of chaining) of associations and finding
47
47
  # the respective JoinAssociation at each level.
48
48
  def find_alias(associations)
49
- if BabySqueel::ActiveRecord::VersionHelper.at_least_6_1?
50
- # construct_tables! got removed by rails
51
- # https://github.com/rails/rails/commit/590b045ee2c0906ff162e6658a184afb201865d7
52
- #
53
- # construct_tables_for_association! is a method from the polyamorous (ransack) gem
54
- join_root = join_dependency.send(:join_root)
55
- join_root.each_children do |parent, child|
56
- join_dependency.construct_tables_for_association!(parent, child)
57
- end
58
- else
59
- # If we tell join_dependency to construct its tables, Active Record
60
- # handles building the correct aliases and attaching them to its
61
- # JoinDepenencies.
62
- join_dependency.send(:construct_tables!, join_dependency.send(:join_root))
49
+ # construct_tables! got removed by rails
50
+ # https://github.com/rails/rails/commit/590b045ee2c0906ff162e6658a184afb201865d7
51
+ #
52
+ # construct_tables_for_association! is a method from the polyamorous (ransack) gem
53
+ join_root = join_dependency.send(:join_root)
54
+ join_root.each_children do |parent, child|
55
+ join_dependency.construct_tables_for_association!(parent, child)
63
56
  end
64
57
 
65
58
  join_association = find_join_association(associations)
@@ -95,7 +88,7 @@ module BabySqueel
95
88
  joins += relation.joins_values
96
89
  joins += relation.left_outer_joins_values
97
90
 
98
- buckets = joins.group_by do |join|
91
+ _buckets = joins.group_by do |join|
99
92
  case join
100
93
  when String
101
94
  :string_join
@@ -41,7 +41,7 @@ module BabySqueel
41
41
  # Conveniently, this approach automatically adds a 1=0.
42
42
  # I have literally no idea why, but I'll take it.
43
43
  def sanitize_relation(rel)
44
- if rel.kind_of? ::ActiveRecord::NullRelation
44
+ if ::ActiveRecord::VERSION::MAJOR < 7 && rel.kind_of?(::ActiveRecord::NullRelation)
45
45
  other = rel.spawn
46
46
  other.extending_values -= [::ActiveRecord::NullRelation]
47
47
  sanitize_relation rel.unscoped.merge(other)
@@ -1,3 +1,3 @@
1
1
  module BabySqueel
2
- VERSION = '2.0.0'.freeze
2
+ VERSION = '3.0.0'.freeze
3
3
  end
data/lib/baby_squeel.rb CHANGED
@@ -1,11 +1,7 @@
1
1
  require 'active_record'
2
2
  require 'active_record/relation'
3
- begin
4
- require 'polyamorous'
5
- rescue LoadError
6
- # Trying loading from 'ransack' as of commit c9cc20de9 (post v2.3.2)
7
- require 'polyamorous/polyamorous'
8
- end
3
+ # Loading polyamorous from 'ransack' as of commit c9cc20de9 (post v2.3.2)
4
+ require 'polyamorous/polyamorous'
9
5
  require 'baby_squeel/version'
10
6
  require 'baby_squeel/errors'
11
7
  require 'baby_squeel/active_record/base'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baby_squeel
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ray Zane
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-28 00:00:00.000000000 Z
11
+ date: 2023-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,34 +16,34 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6.0'
19
+ version: 6.1.5
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.1'
22
+ version: '7.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '6.0'
29
+ version: 6.1.5
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.1'
32
+ version: '7.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: ransack
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '2.3'
39
+ version: '4.1'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '2.3'
46
+ version: '4.1'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -100,7 +100,7 @@ dependencies:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
- description: An expressive query DSL for Active Record 4 and 5.
103
+ description: An expressive query DSL for Active Record 6+
104
104
  email:
105
105
  - ray@promptworks.com
106
106
  executables: []
@@ -156,8 +156,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
158
  requirements: []
159
- rubygems_version: 3.3.7
159
+ rubygems_version: 3.4.13
160
160
  signing_key:
161
161
  specification_version: 4
162
- summary: An expressive query DSL for Active Record 4 and 5.
162
+ summary: An expressive query DSL for Active Record 6+
163
163
  test_files: []