arel-extensions 7.0.2 → 8.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 +4 -4
- data/.github/workflows/ci.yml +31 -20
- data/Gemfile +1 -0
- data/Rakefile +1 -1
- data/arel-extensions.gemspec +2 -2
- data/lib/active_record/query_methods.rb +12 -4
- data/lib/arel/extensions/version.rb +1 -1
- data/lib/arel/extensions.rb +1 -0
- data/lib/arel/nodes/hex_encoded_binary_value.rb +7 -0
- data/lib/arel/visitors/postgresql_extensions.rb +5 -0
- data/test/binary_value_test.rb +9 -0
- metadata +8 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d05a268b8339c9e578ab4f853d761b01f0722b639e1a87470a1aa4e26bb93772
|
|
4
|
+
data.tar.gz: b1372b85e0b46bb2513dba252fc7eb6ea972a591b08369bbc1f1640d0136d3ee
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a5f680f90f52892b29d03c25ae9ed26e4c5cf783e27aadd196852e659bc3215fb8f9dabf55edef7ce9b588957e4a295a4353ea274c57b9955c78f7fb8f584f61
|
|
7
|
+
data.tar.gz: e8e099b793021a12289c2965d426bc9e561d3cc31b1f341e217d2670f40ac6918d452d253bbd2a9413e4ffdc1d8d0d30b5e31595e641504b51c1d92b55ef1214
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -7,10 +7,14 @@ jobs:
|
|
|
7
7
|
name: Arel::Extensions Test
|
|
8
8
|
runs-on: ubuntu-22.04
|
|
9
9
|
strategy:
|
|
10
|
+
fail-fast: false
|
|
10
11
|
matrix:
|
|
11
|
-
rails: ['7.
|
|
12
|
-
ruby-version: ['3.1', '3.2', '3.3']
|
|
13
|
-
postgres-version: ['
|
|
12
|
+
rails: ['7.1.5.1', '7.2.2.1', '8.0.1']
|
|
13
|
+
ruby-version: ['3.1', '3.2', '3.3', '3.4']
|
|
14
|
+
postgres-version: ['17']
|
|
15
|
+
exclude:
|
|
16
|
+
- rails: '8.0.1'
|
|
17
|
+
ruby-version: '3.1'
|
|
14
18
|
|
|
15
19
|
steps:
|
|
16
20
|
- name: Install Postgresql
|
|
@@ -35,16 +39,21 @@ jobs:
|
|
|
35
39
|
ruby-version: ${{ matrix.ruby-version }}
|
|
36
40
|
bundler-cache: false # runs 'bundle install' and caches installed gems automatically
|
|
37
41
|
|
|
38
|
-
- name:
|
|
42
|
+
- name: Fix activerecord-postgis-adapter
|
|
43
|
+
if: ${{ matrix.rails == '8.0.1' }}
|
|
39
44
|
run: |
|
|
40
|
-
|
|
45
|
+
echo "gem 'activerecord-postgis-adapter', github: 'rgeo/activerecord-postgis-adapter', branch: 'rails8'" >> Gemfile
|
|
41
46
|
|
|
42
47
|
- run: |
|
|
43
48
|
sed -i -e "s/gem.add_dependency 'activerecord', '>= [[:digit:]]\+.[[:digit:]]\+.[[:digit:]]\+'/gem.add_dependency 'activerecord', '${{ matrix.rails }}'/" arel-extensions.gemspec
|
|
44
49
|
rm -f Gemfile.lock
|
|
45
50
|
bundle
|
|
46
51
|
|
|
47
|
-
-
|
|
52
|
+
- name: Test Geos
|
|
53
|
+
run: |
|
|
54
|
+
bundle exec ruby -e "require 'rgeo'; puts RGeo::Geos.capi_supported?; puts RGeo::Geos::CAPIGeometryMethods"
|
|
55
|
+
|
|
56
|
+
- run: bundle exec rake test --trace
|
|
48
57
|
|
|
49
58
|
ar-postgresql:
|
|
50
59
|
name: ActiveRecord PostgresQL Test
|
|
@@ -52,9 +61,9 @@ jobs:
|
|
|
52
61
|
|
|
53
62
|
strategy:
|
|
54
63
|
matrix:
|
|
55
|
-
rails: ['
|
|
64
|
+
rails: ['7.1.5.1', '7.2.2.1', '8.0.1']
|
|
56
65
|
ruby-version: ['3.3']
|
|
57
|
-
postgres-version: ['
|
|
66
|
+
postgres-version: ['17']
|
|
58
67
|
|
|
59
68
|
steps:
|
|
60
69
|
- name: Install Postgresql
|
|
@@ -80,7 +89,7 @@ jobs:
|
|
|
80
89
|
|
|
81
90
|
- name: Download Rails
|
|
82
91
|
run: |
|
|
83
|
-
git clone --branch ${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
|
|
92
|
+
git clone --branch v${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
|
|
84
93
|
pushd ~/rails
|
|
85
94
|
cat /home/runner/work/_temp/*.sh
|
|
86
95
|
sed -i "s/Gem.ruby, '-w'/Gem.ruby, '-w0'/" ~/rails/activerecord/Rakefile
|
|
@@ -95,8 +104,8 @@ jobs:
|
|
|
95
104
|
|
|
96
105
|
- run: |
|
|
97
106
|
pushd ~/rails/activerecord
|
|
98
|
-
bundle exec rake db:postgresql:rebuild postgresql:test
|
|
99
|
-
bundle exec rake db:postgresql:rebuild postgresql:isolated_test
|
|
107
|
+
bundle exec rake db:postgresql:rebuild postgresql:test --trace
|
|
108
|
+
bundle exec rake db:postgresql:rebuild postgresql:isolated_test --trace
|
|
100
109
|
|
|
101
110
|
ar-sqlite:
|
|
102
111
|
name: ActiveRecord SQLite Test
|
|
@@ -104,8 +113,9 @@ jobs:
|
|
|
104
113
|
|
|
105
114
|
strategy:
|
|
106
115
|
matrix:
|
|
107
|
-
rails: ['
|
|
116
|
+
rails: ['7.1.5.1', '7.2.2.1', '8.0.1']
|
|
108
117
|
ruby-version: ['3.3']
|
|
118
|
+
postgres-version: ['17']
|
|
109
119
|
|
|
110
120
|
steps:
|
|
111
121
|
- uses: actions/checkout@v4
|
|
@@ -117,7 +127,7 @@ jobs:
|
|
|
117
127
|
|
|
118
128
|
- name: Download Rails
|
|
119
129
|
run: |
|
|
120
|
-
git clone --branch ${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
|
|
130
|
+
git clone --branch v${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
|
|
121
131
|
pushd ~/rails
|
|
122
132
|
cat /home/runner/work/_temp/*.sh
|
|
123
133
|
sed -i "s/Gem.ruby, '-w'/Gem.ruby, '-w0'/" ~/rails/activerecord/Rakefile
|
|
@@ -132,11 +142,11 @@ jobs:
|
|
|
132
142
|
|
|
133
143
|
- run: |
|
|
134
144
|
pushd ~/rails/activerecord
|
|
135
|
-
bundle exec rake sqlite3:test
|
|
145
|
+
bundle exec rake sqlite3:test --trace
|
|
136
146
|
rm test/db/*.sqlite3 test/fixtures/*.sqlite3
|
|
137
|
-
bundle exec rake sqlite3:isolated_test
|
|
147
|
+
bundle exec rake sqlite3:isolated_test --trace
|
|
138
148
|
rm test/db/*.sqlite3 test/fixtures/*.sqlite3
|
|
139
|
-
bundle exec rake sqlite3_mem:test
|
|
149
|
+
bundle exec rake sqlite3_mem:test --trace
|
|
140
150
|
|
|
141
151
|
ar-mysql:
|
|
142
152
|
name: ActiveRecord MySQL Test
|
|
@@ -145,8 +155,9 @@ jobs:
|
|
|
145
155
|
|
|
146
156
|
strategy:
|
|
147
157
|
matrix:
|
|
148
|
-
rails: ['
|
|
158
|
+
rails: ['7.1.5.1', '7.2.2.1', '8.0.1']
|
|
149
159
|
ruby-version: ['3.3']
|
|
160
|
+
postgres-version: ['17']
|
|
150
161
|
|
|
151
162
|
steps:
|
|
152
163
|
- name: Install MySQL
|
|
@@ -164,7 +175,7 @@ jobs:
|
|
|
164
175
|
|
|
165
176
|
- name: Download Rails
|
|
166
177
|
run: |
|
|
167
|
-
git clone --branch ${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
|
|
178
|
+
git clone --branch v${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
|
|
168
179
|
pushd ~/rails
|
|
169
180
|
cat /home/runner/work/_temp/*.sh
|
|
170
181
|
sed -i "s/Gem.ruby, '-w'/Gem.ruby, '-w0'/" ~/rails/activerecord/Rakefile
|
|
@@ -179,5 +190,5 @@ jobs:
|
|
|
179
190
|
|
|
180
191
|
- run: |
|
|
181
192
|
pushd ~/rails/activerecord
|
|
182
|
-
bundle exec rake db:mysql:rebuild mysql2:test
|
|
183
|
-
bundle exec rake db:mysql:rebuild mysql2:isolated_test
|
|
193
|
+
bundle exec rake db:mysql:rebuild mysql2:test --trace
|
|
194
|
+
bundle exec rake db:mysql:rebuild mysql2:isolated_test --trace
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
data/arel-extensions.gemspec
CHANGED
|
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
|
|
|
13
13
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
14
14
|
gem.require_paths = ["lib"]
|
|
15
15
|
|
|
16
|
-
gem.add_dependency 'activerecord', '>= 7.0.0', '<
|
|
16
|
+
gem.add_dependency 'activerecord', '>= 7.0.0', '< 9.0'
|
|
17
17
|
|
|
18
18
|
gem.add_development_dependency "bundler"
|
|
19
19
|
gem.add_development_dependency "debug"
|
|
@@ -24,6 +24,6 @@ Gem::Specification.new do |gem|
|
|
|
24
24
|
gem.add_development_dependency "webmock"
|
|
25
25
|
gem.add_development_dependency 'pg'
|
|
26
26
|
gem.add_development_dependency 'rgeo'
|
|
27
|
-
gem.add_development_dependency "activerecord-postgis-adapter"
|
|
27
|
+
gem.add_development_dependency "activerecord-postgis-adapter", '>= 8.0'
|
|
28
28
|
|
|
29
29
|
end
|
|
@@ -24,10 +24,18 @@ module ActiveRecord::QueryMethods
|
|
|
24
24
|
end
|
|
25
25
|
alias uniq_on! distinct_on!
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
if ActiveRecord >= "7.2"
|
|
28
|
+
def build_arel_with_distinct_on(connection, aliases = nil)
|
|
29
|
+
arel = build_arel_without_distinct_on(connection, aliases)
|
|
30
|
+
arel.distinct_on(self.distinct_on_values) if !self.distinct_on_values.empty?
|
|
31
|
+
arel
|
|
32
|
+
end
|
|
33
|
+
else
|
|
34
|
+
def build_arel_with_distinct_on(aliases = nil)
|
|
35
|
+
arel = build_arel_without_distinct_on(aliases)
|
|
36
|
+
arel.distinct_on(self.distinct_on_values) if !self.distinct_on_values.empty?
|
|
37
|
+
arel
|
|
38
|
+
end
|
|
31
39
|
end
|
|
32
40
|
alias_method :build_arel_without_distinct_on, :build_arel
|
|
33
41
|
alias_method :build_arel, :build_arel_with_distinct_on
|
data/lib/arel/extensions.rb
CHANGED
|
@@ -145,6 +145,11 @@ module Arel
|
|
|
145
145
|
collector
|
|
146
146
|
end
|
|
147
147
|
|
|
148
|
+
def visit_Arel_Nodes_HexEncodedBinaryValue(o, collector)
|
|
149
|
+
collector << quote("\\x" + o.expr)
|
|
150
|
+
collector
|
|
151
|
+
end
|
|
152
|
+
|
|
148
153
|
def visit_Arel_Nodes_Intersects o, collector
|
|
149
154
|
visit(Arel::Nodes::NamedFunction.new('ST_Intersects', [ o.left, o.right ]), collector)
|
|
150
155
|
collector
|
data/test/binary_value_test.rb
CHANGED
|
@@ -11,4 +11,13 @@ class BinaryValueTest < ActiveSupport::TestCase
|
|
|
11
11
|
SQL
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
test 'hex encoded binary value' do
|
|
15
|
+
query = Property.where( Arel::Nodes::HexEncodedBinaryValue.new("0101000000c04b9b84d02e3c400896a26e84252640") )
|
|
16
|
+
|
|
17
|
+
assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
|
|
18
|
+
SELECT "properties".* FROM "properties"
|
|
19
|
+
WHERE '\\x0101000000c04b9b84d02e3c400896a26e84252640'
|
|
20
|
+
SQL
|
|
21
|
+
end
|
|
22
|
+
|
|
14
23
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: arel-extensions
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 8.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jon Bracy
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-01-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -19,7 +19,7 @@ dependencies:
|
|
|
19
19
|
version: 7.0.0
|
|
20
20
|
- - "<"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
22
|
+
version: '9.0'
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,7 +29,7 @@ dependencies:
|
|
|
29
29
|
version: 7.0.0
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
32
|
+
version: '9.0'
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
34
|
name: bundler
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -162,14 +162,14 @@ dependencies:
|
|
|
162
162
|
requirements:
|
|
163
163
|
- - ">="
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
|
-
version: '0'
|
|
165
|
+
version: '8.0'
|
|
166
166
|
type: :development
|
|
167
167
|
prerelease: false
|
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
|
169
169
|
requirements:
|
|
170
170
|
- - ">="
|
|
171
171
|
- !ruby/object:Gem::Version
|
|
172
|
-
version: '0'
|
|
172
|
+
version: '8.0'
|
|
173
173
|
description:
|
|
174
174
|
email:
|
|
175
175
|
- jonbracy@gmail.com
|
|
@@ -202,6 +202,7 @@ files:
|
|
|
202
202
|
- lib/arel/nodes/has_any_key.rb
|
|
203
203
|
- lib/arel/nodes/has_key.rb
|
|
204
204
|
- lib/arel/nodes/has_keys.rb
|
|
205
|
+
- lib/arel/nodes/hex_encoded_binary_value.rb
|
|
205
206
|
- lib/arel/nodes/intersects.rb
|
|
206
207
|
- lib/arel/nodes/random.rb
|
|
207
208
|
- lib/arel/nodes/relation.rb
|
|
@@ -241,7 +242,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
241
242
|
- !ruby/object:Gem::Version
|
|
242
243
|
version: '0'
|
|
243
244
|
requirements: []
|
|
244
|
-
rubygems_version: 3.5.
|
|
245
|
+
rubygems_version: 3.5.21
|
|
245
246
|
signing_key:
|
|
246
247
|
specification_version: 4
|
|
247
248
|
summary: Adds support for missing SQL operators and functions to Arel
|