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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cacc514c90f3c935c67e37ca4bc1e46ac2cd188a0aaa793b72cded82f5f683cf
4
- data.tar.gz: 26e637ca2a7db733f1689f06fd40cdd7766430d69d72a2e08c2eeeba57ad15aa
3
+ metadata.gz: d05a268b8339c9e578ab4f853d761b01f0722b639e1a87470a1aa4e26bb93772
4
+ data.tar.gz: b1372b85e0b46bb2513dba252fc7eb6ea972a591b08369bbc1f1640d0136d3ee
5
5
  SHA512:
6
- metadata.gz: 76985c31374664b54be3e43f26f16ad62e386dcf1c0930633e147488e5f689ff5e769ec6da087f38d8f713ce1c2dc137d01b01cc0eaf061a56fcb6868479d83e
7
- data.tar.gz: 6ee5df8149a3d8c152b9081ad06fcdab1b7135871c8787654d4a0c630e060d221dea7a31035f76c817494bd6ffc38e8d839a3296178dfdbb08c8666a1611878c
6
+ metadata.gz: a5f680f90f52892b29d03c25ae9ed26e4c5cf783e27aadd196852e659bc3215fb8f9dabf55edef7ce9b588957e4a295a4353ea274c57b9955c78f7fb8f584f61
7
+ data.tar.gz: e8e099b793021a12289c2965d426bc9e561d3cc31b1f341e217d2670f40ac6918d452d253bbd2a9413e4ffdc1d8d0d30b5e31595e641504b51c1d92b55ef1214
@@ -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.0.8.4', '7.1.4', '7.2.1']
12
- ruby-version: ['3.1', '3.2', '3.3']
13
- postgres-version: ['15']
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: Test Geos
42
+ - name: Fix activerecord-postgis-adapter
43
+ if: ${{ matrix.rails == '8.0.1' }}
39
44
  run: |
40
- bundle exec ruby -e "require 'rgeo'; puts RGeo::Geos.capi_supported?; puts RGeo::Geos::CAPIGeometryMethods"
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
- - run: bundle exec rake test
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: ['v7.0.8.4', 'v7.1.4']
64
+ rails: ['7.1.5.1', '7.2.2.1', '8.0.1']
56
65
  ruby-version: ['3.3']
57
- postgres-version: ['15']
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: ['v7.0.8.4', 'v7.1.4']
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: ['v7.0.8.4', 'v7.1.4']
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
@@ -1,4 +1,5 @@
1
1
  source "https://rubygems.org"
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
2
3
 
3
4
  # Specify your gem's dependencies in sunstone.gemspec
4
5
  gemspec
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ require "rake/testtask"
8
8
  # Test Task
9
9
  Rake::TestTask.new do |t|
10
10
  t.libs << 'lib' << 'test'
11
- t.test_files = FileList['test/**/*_test.rb']
11
+ t.test_files = FileList[ARGV[1] ? ARGV[1] : 'test/**/*_test.rb']
12
12
  # t.warning = true
13
13
  # t.verbose = true
14
14
  end
@@ -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', '< 7.2'
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
- def build_arel_with_distinct_on(aliases = nil)
28
- arel = build_arel_without_distinct_on(aliases)
29
- arel.distinct_on(self.distinct_on_values) if !self.distinct_on_values.empty?
30
- arel
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
@@ -1,5 +1,5 @@
1
1
  module Arel
2
2
  module Extensions
3
- VERSION = '7.0.2'
3
+ VERSION = '8.0.0'
4
4
  end
5
5
  end
@@ -1,5 +1,6 @@
1
1
  require "arel"
2
2
  require File.expand_path('../nodes/binary_value', __FILE__)
3
+ require File.expand_path('../nodes/hex_encoded_binary_value', __FILE__)
3
4
 
4
5
  require_relative "./nodes/geometry"
5
6
  require_relative "./nodes/intersects"
@@ -0,0 +1,7 @@
1
+ module Arel
2
+ module Nodes
3
+ class HexEncodedBinaryValue < Arel::Nodes::Unary
4
+
5
+ end
6
+ end
7
+ end
@@ -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
@@ -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: 7.0.2
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: 2024-09-09 00:00:00.000000000 Z
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: '7.2'
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: '7.2'
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.11
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