arel-extensions 7.0.0 → 7.0.2

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: 9bf2e8f56e1ddcbbad8174dae4355722b1ae038c39a828b1168685bbbdb4f05a
4
- data.tar.gz: 5ae312e7b320d222c785ed573279bb605f6e8ef27eaff194cd2f37843fc106f1
3
+ metadata.gz: cacc514c90f3c935c67e37ca4bc1e46ac2cd188a0aaa793b72cded82f5f683cf
4
+ data.tar.gz: 26e637ca2a7db733f1689f06fd40cdd7766430d69d72a2e08c2eeeba57ad15aa
5
5
  SHA512:
6
- metadata.gz: 9262f694b5daa13b0d87799a4d88a8b4a8850d49d76415cb75f19d803030cbd699410b850168ee2053c2f7804d050ae05d965feb5f04b17af3df8c99453c4cdd
7
- data.tar.gz: 1a72cb377d66c28872b89ddb9cce81fc735e0a500fd30291e45336156ab1c3fb68bac3b9a012f1a52a80abd717e79560a2d608f73e8534c5253d489f2161f657
6
+ metadata.gz: 76985c31374664b54be3e43f26f16ad62e386dcf1c0930633e147488e5f689ff5e769ec6da087f38d8f713ce1c2dc137d01b01cc0eaf061a56fcb6868479d83e
7
+ data.tar.gz: 6ee5df8149a3d8c152b9081ad06fcdab1b7135871c8787654d4a0c630e060d221dea7a31035f76c817494bd6ffc38e8d839a3296178dfdbb08c8666a1611878c
@@ -1,40 +1,48 @@
1
1
  name: CI
2
2
 
3
- on:
4
- push:
5
- branches: [ master ]
6
- pull_request:
7
- branches: [ master ]
3
+ on: [push, pull_request]
8
4
 
9
5
  jobs:
10
6
  sunstone:
11
7
  name: Arel::Extensions Test
12
8
  runs-on: ubuntu-22.04
9
+ strategy:
10
+ 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']
13
14
 
14
15
  steps:
15
16
  - name: Install Postgresql
16
17
  run: |
17
- sudo pg_dropcluster 13 main && echo 'okay'
18
- sudo pg_dropcluster 14 main && echo 'okay'
19
- sudo rm -rf /etc/postgresql-common
20
18
  sudo apt-get -y --purge remove $(sudo apt list --installed | grep postgresql | awk '{print $1}')
21
19
  sudo apt-get install curl ca-certificates gnupg
22
20
  curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
23
21
  sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
24
22
  sudo apt-get update
25
- sudo apt-get -y install postgresql-15
26
- sudo systemctl start postgresql@15-main.service
27
- sudo systemctl status postgresql@15-main.service
23
+ sudo apt-get -y install libgeos-dev
24
+ sudo apt-get -y install postgresql-${{ matrix.postgres-version }}-postgis-3
25
+ sudo systemctl start postgresql@${{ matrix.postgres-version }}-main.service
26
+ sudo systemctl status postgresql@${{ matrix.postgres-version }}-main.service
28
27
  sudo pg_lsclusters
29
28
  sudo -u postgres createuser runner --superuser
30
-
29
+ sudo -u postgres psql -c "ALTER USER runner WITH PASSWORD 'runner';"
30
+
31
+ - uses: actions/checkout@v4
32
+
31
33
  - uses: ruby/setup-ruby@v1
32
34
  with:
33
- ruby-version: 3.1
35
+ ruby-version: ${{ matrix.ruby-version }}
36
+ bundler-cache: false # runs 'bundle install' and caches installed gems automatically
34
37
 
35
- - uses: actions/checkout@v2
38
+ - name: Test Geos
39
+ run: |
40
+ bundle exec ruby -e "require 'rgeo'; puts RGeo::Geos.capi_supported?; puts RGeo::Geos::CAPIGeometryMethods"
36
41
 
37
- - run: bundle
42
+ - run: |
43
+ sed -i -e "s/gem.add_dependency 'activerecord', '>= [[:digit:]]\+.[[:digit:]]\+.[[:digit:]]\+'/gem.add_dependency 'activerecord', '${{ matrix.rails }}'/" arel-extensions.gemspec
44
+ rm -f Gemfile.lock
45
+ bundle
38
46
 
39
47
  - run: bundle exec rake test
40
48
 
@@ -44,32 +52,32 @@ jobs:
44
52
 
45
53
  strategy:
46
54
  matrix:
47
- rails:
48
- - v7.0.4
55
+ rails: ['v7.0.8.4', 'v7.1.4']
56
+ ruby-version: ['3.3']
57
+ postgres-version: ['15']
49
58
 
50
59
  steps:
51
60
  - name: Install Postgresql
52
61
  run: |
53
- sudo pg_dropcluster 13 main && echo 'okay'
54
- sudo pg_dropcluster 14 main && echo 'okay'
55
- sudo rm -rf /etc/postgresql-common
56
62
  sudo apt-get -y --purge remove $(sudo apt list --installed | grep postgresql | awk '{print $1}')
57
63
  sudo apt-get install curl ca-certificates gnupg
58
64
  curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
59
65
  sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
60
66
  sudo apt-get update
61
- sudo apt-get -y install postgresql-15
62
- sudo systemctl start postgresql@15-main.service
63
- sudo systemctl status postgresql@15-main.service
67
+ sudo apt-get -y install postgresql-${{ matrix.postgres-version }}-postgis-3
68
+ sudo systemctl start postgresql@${{ matrix.postgres-version }}-main.service
69
+ sudo systemctl status postgresql@${{ matrix.postgres-version }}-main.service
64
70
  sudo pg_lsclusters
65
71
  sudo -u postgres createuser runner --superuser
72
+ sudo -u postgres psql -c "ALTER USER runner WITH PASSWORD 'runner';"
73
+
74
+ - uses: actions/checkout@v4
66
75
 
67
76
  - uses: ruby/setup-ruby@v1
68
77
  with:
69
- ruby-version: 3.1
70
-
71
- - uses: actions/checkout@v2
72
-
78
+ ruby-version: ${{ matrix.ruby-version }}
79
+ bundler-cache: false # runs 'bundle install' and caches installed gems automatically
80
+
73
81
  - name: Download Rails
74
82
  run: |
75
83
  git clone --branch ${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
@@ -80,6 +88,8 @@ jobs:
80
88
  sed -i "/require 'support\/connection'/a \$LOAD_PATH.unshift\(File.expand_path\(ENV['GITHUB_WORKSPACE']\)\)\nrequire 'arel/extensions'" ~/rails/activerecord/test/cases/helper.rb
81
89
  rm ~/rails/Gemfile.lock
82
90
  sed -i "/# Active Record./a gem 'arel-extensions', require: 'arel/extensions', path: File.expand_path\(ENV['GITHUB_WORKSPACE']\)" ~/rails/Gemfile
91
+ echo "gem 'ostruct'" >> ~/rails/Gemfile
92
+ sed -i "s/# frozen_string_literal: true/# frozen_string_literal: true\nrequire 'ostruct'/" ~/rails/activerecord/test/cases/encryption/configurable_test.rb
83
93
  cat ~/rails/Gemfile
84
94
  bundle update --jobs=3 --retry=3
85
95
 
@@ -94,16 +104,17 @@ jobs:
94
104
 
95
105
  strategy:
96
106
  matrix:
97
- rails:
98
- - v7.0.4
107
+ rails: ['v7.0.8.4', 'v7.1.4']
108
+ ruby-version: ['3.3']
99
109
 
100
110
  steps:
111
+ - uses: actions/checkout@v4
112
+
101
113
  - uses: ruby/setup-ruby@v1
102
114
  with:
103
- ruby-version: 3.0
104
-
105
- - uses: actions/checkout@v2
106
-
115
+ ruby-version: ${{ matrix.ruby-version }}
116
+ bundler-cache: false # runs 'bundle install' and caches installed gems automatically
117
+
107
118
  - name: Download Rails
108
119
  run: |
109
120
  git clone --branch ${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
@@ -114,6 +125,8 @@ jobs:
114
125
  sed -i "/require 'support\/connection'/a \$LOAD_PATH.unshift\(File.expand_path\(ENV['GITHUB_WORKSPACE']\)\)\nrequire 'arel/extensions'" ~/rails/activerecord/test/cases/helper.rb
115
126
  rm ~/rails/Gemfile.lock
116
127
  sed -i "/# Active Record./a gem 'arel-extensions', require: 'arel/extensions', path: File.expand_path\(ENV['GITHUB_WORKSPACE']\)" ~/rails/Gemfile
128
+ echo "gem 'ostruct'" >> ~/rails/Gemfile
129
+ sed -i "s/# frozen_string_literal: true/# frozen_string_literal: true\nrequire 'ostruct'/" ~/rails/activerecord/test/cases/encryption/configurable_test.rb
117
130
  cat ~/rails/Gemfile
118
131
  bundle update --jobs=3 --retry=3
119
132
 
@@ -129,10 +142,11 @@ jobs:
129
142
  name: ActiveRecord MySQL Test
130
143
  runs-on: ubuntu-22.04
131
144
 
145
+
132
146
  strategy:
133
147
  matrix:
134
- rails:
135
- - v7.0.4
148
+ rails: ['v7.0.8.4', 'v7.1.4']
149
+ ruby-version: ['3.3']
136
150
 
137
151
  steps:
138
152
  - name: Install MySQL
@@ -141,12 +155,13 @@ jobs:
141
155
  mysql -uroot -proot -e "CREATE USER 'rails'@'%';"
142
156
  mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'rails'@'%' WITH GRANT OPTION;"
143
157
 
158
+ - uses: actions/checkout@v4
159
+
144
160
  - uses: ruby/setup-ruby@v1
145
161
  with:
146
- ruby-version: 3.0
147
-
148
- - uses: actions/checkout@v2
149
-
162
+ ruby-version: ${{ matrix.ruby-version }}
163
+ bundler-cache: false # runs 'bundle install' and caches installed gems automatically
164
+
150
165
  - name: Download Rails
151
166
  run: |
152
167
  git clone --branch ${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
@@ -157,6 +172,8 @@ jobs:
157
172
  sed -i "/require 'support\/connection'/a \$LOAD_PATH.unshift\(File.expand_path\(ENV['GITHUB_WORKSPACE']\)\)\nrequire 'arel/extensions'" ~/rails/activerecord/test/cases/helper.rb
158
173
  rm ~/rails/Gemfile.lock
159
174
  sed -i "/# Active Record./a gem 'arel-extensions', require: 'arel/extensions', path: File.expand_path\(ENV['GITHUB_WORKSPACE']\)" ~/rails/Gemfile
175
+ echo "gem 'ostruct'" >> ~/rails/Gemfile
176
+ sed -i "s/# frozen_string_literal: true/# frozen_string_literal: true\nrequire 'ostruct'/" ~/rails/activerecord/test/cases/encryption/configurable_test.rb
160
177
  cat ~/rails/Gemfile
161
178
  bundle update --jobs=3 --retry=3
162
179
 
@@ -13,10 +13,10 @@ 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', '< 7.2'
17
17
 
18
18
  gem.add_development_dependency "bundler"
19
- gem.add_development_dependency "byebug"
19
+ gem.add_development_dependency "debug"
20
20
  gem.add_development_dependency "rake"
21
21
  gem.add_development_dependency 'minitest'
22
22
  gem.add_development_dependency 'minitest-reporters'
@@ -24,5 +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
28
 
28
29
  end
@@ -1,5 +1,5 @@
1
1
  module Arel
2
2
  module Extensions
3
- VERSION = '7.0.0'
3
+ VERSION = '7.0.2'
4
4
  end
5
5
  end
@@ -1,9 +1,12 @@
1
1
  require "arel"
2
- require File.expand_path('../nodes/hex_encoded_binary', __FILE__)
2
+ require File.expand_path('../nodes/binary_value', __FILE__)
3
+
4
+ require_relative "./nodes/geometry"
5
+ require_relative "./nodes/intersects"
6
+ require_relative "./nodes/within"
7
+ require_relative "./nodes/excludes"
8
+ require_relative "./nodes/contained_by"
3
9
 
4
- require File.expand_path('../nodes/within', __FILE__)
5
- require File.expand_path('../nodes/excludes', __FILE__)
6
- require File.expand_path('../nodes/contained_by', __FILE__)
7
10
  require File.expand_path('../array_predications', __FILE__)
8
11
  Arel::Attributes::Attribute.include(Arel::ArrayPredications)
9
12
 
@@ -46,4 +49,4 @@ end
46
49
 
47
50
  if defined?(Arel::Visitors::ToSql)
48
51
  require File.expand_path('../visitors/to_sql_extensions', __FILE__)
49
- end
52
+ end
@@ -1,9 +1,31 @@
1
1
  module Arel
2
2
  module GISPredications
3
-
4
- def within(bounds)
5
- Arel::Nodes::Within.new(self, bounds)
3
+
4
+ def intersects(value)
5
+ Arel::Nodes::Intersects.new(self, geometry(value))
6
+ end
7
+
8
+ def within(value)
9
+ Arel::Nodes::Within.new(self, geometry(value))
6
10
  end
7
11
 
12
+ private
13
+
14
+ def geometry(value)
15
+ case value
16
+ in Arel::Nodes::Node then value
17
+ in RGeo::Geos::CAPIGeometryMethods then Arel::Nodes::Geometry.new(value)
18
+ in ::String
19
+ factory = RGeo::Geos.factory(:srid => 4326)
20
+ result = if value[0,1] == "\x00" || value[0,1] == "\x01" || value[0,4] =~ /[0-9a-fA-F]{4}/
21
+ RGeo::WKRep::WKBParser.new(factory, support_ewkb: true, default_srid: 4326).parse(value)
22
+ else
23
+ RGeo::WKRep::WKTParser.new(factory, support_ewkt: true, default_srid: 4326).parse(value)
24
+ end
25
+ Arel::Nodes::Geometry.new(result)
26
+ in Hash
27
+ Arel::Nodes::Geometry.new(RGeo::GeoJSON.decode(value))
28
+ end
29
+ end
8
30
  end
9
31
  end
@@ -0,0 +1,7 @@
1
+ module Arel
2
+ module Nodes
3
+ class BinaryValue < Arel::Nodes::Unary
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ module Arel
2
+ module Nodes
3
+ class Geometry < Arel::Nodes::Unary
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Arel
2
+ module Nodes
3
+ class Intersects < Binary
4
+ end
5
+ end
6
+ end
@@ -2,12 +2,12 @@ module Arel
2
2
  module Visitors
3
3
  class PostgreSQL
4
4
  private
5
-
5
+
6
6
  def column_for attr
7
7
  return nil if attr.is_a?(Arel::Attributes::Key)
8
8
  super
9
9
  end
10
-
10
+
11
11
  def visit_Arel_Nodes_Ascending o, collector
12
12
  case o.nulls
13
13
  when :nulls_first then visit(o.expr, collector) << ' ASC NULLS FIRST'
@@ -23,11 +23,11 @@ module Arel
23
23
  else visit(o.expr, collector) << ' DESC'
24
24
  end
25
25
  end
26
-
26
+
27
27
  def visit_Arel_Nodes_RandomOrdering o, collector
28
28
  collector << "RANDOM()"
29
29
  end
30
-
30
+
31
31
  def visit_Arel_Nodes_Excludes o, collector
32
32
  collector << 'NOT ('
33
33
  visit o.left, collector
@@ -57,79 +57,79 @@ module Arel
57
57
 
58
58
  def visit_Arel_Nodes_HasKey(o, collector)
59
59
  right = o.right
60
-
60
+
61
61
  collector = visit o.left, collector
62
-
62
+
63
63
  collector << " ? " << quote(right.to_s)
64
64
  collector
65
65
  end
66
66
 
67
67
  def visit_Arel_Nodes_HasKeys(o, collector)
68
68
  right = o.right
69
-
69
+
70
70
  collector = visit o.left, collector
71
-
71
+
72
72
  collector << " ?& array[" << Array(right).map { |v| quote(v.to_s) }.join(',') << "]"
73
73
  collector
74
74
  end
75
-
75
+
76
76
  def visit_Arel_Nodes_HasAnyKey(o, collector)
77
77
  right = o.right
78
-
78
+
79
79
  collector = visit o.left, collector
80
-
80
+
81
81
  collector << " ?| array[" << Array(right).map { |v| quote(v.to_s) }.join(',') << "]"
82
82
  collector
83
83
  end
84
-
84
+
85
85
  def visit_Arel_Attributes_Cast(o, collector)
86
86
  collector << "("
87
87
  visit(o.relation, collector)
88
88
  collector << ")::#{o.name}"
89
89
  collector
90
90
  end
91
-
91
+
92
92
  def visit_Arel_Nodes_TSMatch(o, collector)
93
93
  visit o.left, collector
94
94
  collector << ' @@ '
95
95
  visit o.right, collector
96
96
  collector
97
97
  end
98
-
98
+
99
99
  def visit_Arel_Nodes_TSVector(o, collector)
100
100
  collector << 'to_tsvector('
101
101
  if o.language
102
- visit(o.language, collector)
102
+ visit(o.language, collector)
103
103
  collector << ', '
104
104
  end
105
- visit(o.attribute, collector)
105
+ visit(o.attribute, collector)
106
106
  collector << ')'
107
107
  collector
108
108
  end
109
-
109
+
110
110
  def visit_Arel_Nodes_TSQuery(o, collector)
111
111
  collector << 'to_tsquery('
112
112
  if o.language
113
- visit(o.language, collector)
113
+ visit(o.language, collector)
114
114
  collector << ', '
115
115
  end
116
- visit(o.expression, collector)
116
+ visit(o.expression, collector)
117
117
  collector << ')'
118
118
  collector
119
119
  end
120
-
120
+
121
121
  def visit_Arel_Nodes_TSRank(o, collector)
122
122
  collector << 'ts_rank('
123
- visit(o.tsvector, collector)
123
+ visit(o.tsvector, collector)
124
124
  collector << ', '
125
125
  visit(o.tsquery, collector)
126
126
  collector << ')'
127
127
  collector
128
128
  end
129
-
129
+
130
130
  def visit_Arel_Nodes_TSRankCD(o, collector)
131
131
  collector << 'ts_rank_cd('
132
- visit(o.tsvector, collector)
132
+ visit(o.tsvector, collector)
133
133
  collector << ', '
134
134
  visit(o.tsquery, collector)
135
135
  if o.normalization
@@ -139,26 +139,24 @@ module Arel
139
139
  collector << ')'
140
140
  collector
141
141
  end
142
-
143
- def visit_Arel_Nodes_HexEncodedBinary(o, collector)
144
- collector << "E'\\\\x"
145
- collector << o.expr
146
- collector << "'"
142
+
143
+ def visit_Arel_Nodes_BinaryValue(o, collector)
144
+ collector << quote(@connection.escape_bytea(o.expr))
145
+ collector
146
+ end
147
+
148
+ def visit_Arel_Nodes_Intersects o, collector
149
+ visit(Arel::Nodes::NamedFunction.new('ST_Intersects', [ o.left, o.right ]), collector)
147
150
  collector
148
151
  end
149
152
 
150
153
  def visit_Arel_Nodes_Within o, collector
151
- envelope = if o.right.is_a?(Arel::Nodes::HexEncodedBinary)
152
- Arel::Nodes::NamedFunction.new('ST_GeomFromEWKB', [o.right])
153
- elsif o.right.is_a?(Arel::Nodes::Quoted) && o.right.expr.is_a?(String)
154
- Arel::Nodes::NamedFunction.new('ST_GeomFromEWKT', [o.right])
155
- elsif o.right.is_a?(Arel::Nodes::Quoted) && o.right.expr.is_a?(Hash)
156
- Arel::Nodes::NamedFunction.new('ST_GeomFromGeoJSON', [Arel::Nodes.build_quoted(o.right.expr.to_json)])
157
- else
158
- raise 'within error'
159
- end
154
+ visit(Arel::Nodes::NamedFunction.new('ST_Within', [ o.left, o.right ]), collector)
155
+ collector
156
+ end
160
157
 
161
- visit(Arel::Nodes::NamedFunction.new('ST_Within', [o.left, envelope]), collector)
158
+ def visit_Arel_Nodes_Geometry o, collector
159
+ collector << quote(o.value.as_binary.each_byte.map { |b| b.to_s(16).rjust(2, '0') }.join)
162
160
  collector
163
161
  end
164
162
 
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+
3
+ class BinaryValueTest < ActiveSupport::TestCase
4
+
5
+ test 'binary value' do
6
+ query = Property.where( Arel::Nodes::BinaryValue.new("\x01\x01\x00\x00\x00\xC0K\x9B\x84\xD0.<@\b\x96\xA2n\x84%&@") )
7
+
8
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
9
+ SELECT "properties".* FROM "properties"
10
+ WHERE '\\x0101000000c04b9b84d02e3c400896a26e84252640'
11
+ SQL
12
+ end
13
+
14
+ end
data/test/database.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  ActiveRecord::Base.establish_connection({
2
- adapter: "postgresql",
2
+ adapter: "postgis",
3
3
  database: "arel-extensions-test",
4
4
  encoding: "utf8"
5
5
  })
@@ -11,10 +11,12 @@ task.create
11
11
 
12
12
  ActiveRecord::Migration.suppress_messages do
13
13
  ActiveRecord::Schema.define do
14
+ enable_extension "postgis"
14
15
 
15
16
  create_table "addresses", force: :cascade do |t|
16
17
  t.integer "name"
17
18
  t.integer "property_id"
19
+ t.geometry "location", limit: {:type=>"Point", :srid=>"4326"}
18
20
  end
19
21
 
20
22
  create_table "properties", force: :cascade do |t|
data/test/gis_test.rb ADDED
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+
3
+ class GISTest < ActiveSupport::TestCase
4
+
5
+ test 'intersects' do
6
+ query = Address.arel_table['location'].intersects('POINT (28.182869232095754 11.073276002261096)')
7
+
8
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
9
+ ST_Intersects("addresses"."location", '0101000000c04b9b84d02e3c400896a26e84252640')
10
+ SQL
11
+ end
12
+
13
+ test 'within' do
14
+ query = Address.arel_table['location'].within('POINT (28.182869232095754 11.073276002261096)')
15
+
16
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
17
+ ST_Within("addresses"."location", '0101000000c04b9b84d02e3c400896a26e84252640')
18
+ SQL
19
+
20
+ result = Address.where(query).first
21
+ end
22
+
23
+ end
data/test/test_helper.rb CHANGED
@@ -9,6 +9,7 @@ $LOAD_PATH << File.expand_path('../lib', __FILE__)
9
9
  # end
10
10
 
11
11
  require 'rgeo'
12
+ require 'debug'
12
13
  require "minitest/autorun"
13
14
  require 'minitest/unit'
14
15
  require 'minitest/reporters'
@@ -17,7 +18,7 @@ require 'webmock/minitest'
17
18
  require 'active_record'
18
19
  require 'sunstone'
19
20
  require 'arel/extensions'
20
-
21
+ require 'activerecord-postgis-adapter'
21
22
 
22
23
  # Setup the test db
23
24
  ActiveSupport.test_order = :random
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.0
4
+ version: 7.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Bracy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-07 00:00:00.000000000 Z
11
+ date: 2024-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 7.0.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7.2'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: 7.0.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7.2'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: bundler
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +45,7 @@ dependencies:
39
45
  - !ruby/object:Gem::Version
40
46
  version: '0'
41
47
  - !ruby/object:Gem::Dependency
42
- name: byebug
48
+ name: debug
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - ">="
@@ -150,6 +156,20 @@ dependencies:
150
156
  - - ">="
151
157
  - !ruby/object:Gem::Version
152
158
  version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: activerecord-postgis-adapter
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
153
173
  description:
154
174
  email:
155
175
  - jonbracy@gmail.com
@@ -175,12 +195,14 @@ files:
175
195
  - lib/arel/extensions/version.rb
176
196
  - lib/arel/gis_predications.rb
177
197
  - lib/arel/json_predications.rb
198
+ - lib/arel/nodes/binary_value.rb
178
199
  - lib/arel/nodes/contained_by.rb
179
200
  - lib/arel/nodes/excludes.rb
201
+ - lib/arel/nodes/geometry.rb
180
202
  - lib/arel/nodes/has_any_key.rb
181
203
  - lib/arel/nodes/has_key.rb
182
204
  - lib/arel/nodes/has_keys.rb
183
- - lib/arel/nodes/hex_encoded_binary.rb
205
+ - lib/arel/nodes/intersects.rb
184
206
  - lib/arel/nodes/random.rb
185
207
  - lib/arel/nodes/relation.rb
186
208
  - lib/arel/nodes/ts_match.rb
@@ -193,7 +215,9 @@ files:
193
215
  - lib/arel/visitors/postgresql_extensions.rb
194
216
  - lib/arel/visitors/sunstone_extensions.rb
195
217
  - lib/arel/visitors/to_sql_extensions.rb
218
+ - test/binary_value_test.rb
196
219
  - test/database.rb
220
+ - test/gis_test.rb
197
221
  - test/order_test.rb
198
222
  - test/sunstone_test.rb
199
223
  - test/test_helper.rb
@@ -217,12 +241,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
241
  - !ruby/object:Gem::Version
218
242
  version: '0'
219
243
  requirements: []
220
- rubygems_version: 3.2.22
244
+ rubygems_version: 3.5.11
221
245
  signing_key:
222
246
  specification_version: 4
223
247
  summary: Adds support for missing SQL operators and functions to Arel
224
248
  test_files:
249
+ - test/binary_value_test.rb
225
250
  - test/database.rb
251
+ - test/gis_test.rb
226
252
  - test/order_test.rb
227
253
  - test/sunstone_test.rb
228
254
  - test/test_helper.rb
@@ -1,7 +0,0 @@
1
- module Arel
2
- module Nodes
3
- class HexEncodedBinary < Arel::Nodes::Unary
4
-
5
- end
6
- end
7
- end