Skip to content

Commit

Permalink
Merge pull request #382 from seuros/master
Browse files Browse the repository at this point in the history
support rails 7.1.0
  • Loading branch information
keithdoggett committed Oct 6, 2023
2 parents a0e1200 + e5abf62 commit 8fb63ee
Show file tree
Hide file tree
Showing 11 changed files with 35 additions and 29 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Expand Up @@ -31,7 +31,7 @@ jobs:
pg: [11-3.0, 12-master, 13-master, 14-master, 15-master]
steps:
- name: Set Up Actions
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install GEOS
run: sudo apt-get install libgeos-dev
- name: Set Up Ruby
Expand Down
2 changes: 0 additions & 2 deletions Gemfile
Expand Up @@ -33,10 +33,8 @@ end

# Need to install for tests
gem "rails", github: "rails/rails", tag: "v#{activerecord_version}"

group :development do
# Gems used by the ActiveRecord test suite
gem "bcrypt"
gem "mocha"
gem "sqlite3"
end
4 changes: 2 additions & 2 deletions activerecord-postgis-adapter.gemspec
Expand Up @@ -19,13 +19,13 @@ Gem::Specification.new do |spec|

spec.required_ruby_version = ">= 2.7.0"

spec.add_dependency "activerecord", "~> 7.0.0"
spec.add_dependency "activerecord", "~> 7.1.0"
spec.add_dependency "rgeo-activerecord", "~> 7.0.0"

spec.add_development_dependency "rake", "~> 13.0"
spec.add_development_dependency "minitest", "~> 5.4"
spec.add_development_dependency "mocha", "~> 1.1"
spec.add_development_dependency "benchmark-ips", "~> 2.9.1"
spec.add_development_dependency "benchmark-ips", "~> 2.12"
spec.add_development_dependency "rubocop", "~> 1.50"

spec.metadata = {
Expand Down
Expand Up @@ -4,6 +4,7 @@ module ActiveRecord
module ConnectionAdapters
module PostGIS
module ColumnMethods

def spatial(name, options = {})
raise "You must set a type. For example: 't.spatial type: :st_point'" unless options[:type]
column(name, options[:type], **options)
Expand Down Expand Up @@ -44,6 +45,11 @@ def st_point(name, options = {})
def st_polygon(name, options = {})
column(name, :st_polygon, **options)
end

private
def valid_column_definition_options
super + [:srid, :has_z, :has_m, :geographic, :spatial_type]
end
end
end

Expand Down
5 changes: 4 additions & 1 deletion lib/active_record/connection_adapters/postgis/oid/spatial.rb
Expand Up @@ -25,7 +25,10 @@ def initialize(geo_type: "geometry", srid: 0, has_z: false, has_m: false, geogra
# has_z: false
# has_m: false
def self.parse_sql_type(sql_type)
geo_type, srid, has_z, has_m = nil, 0, false, false
geo_type = nil
srid = 0
has_z = false
has_m = false

if sql_type =~ /(geography|geometry)\((.*)\)$/i
# geometry(Point)
Expand Down
Expand Up @@ -7,7 +7,7 @@ module SchemaStatements
# override
# https://github.com/rails/rails/blob/7-0-stable/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L662
# Create a SpatialColumn instead of a PostgreSQL::Column
def new_column_from_field(table_name, field)
def new_column_from_field(table_name, field, _definitions)
column_name, type, default, notnull, oid, fmod, collation, comment, attgenerated = field
type_metadata = fetch_type_metadata(column_name, type, oid.to_i, fmod.to_i)
default_value = extract_value_from_default(default)
Expand All @@ -18,7 +18,7 @@ def new_column_from_field(table_name, field)
default_function = extract_default_function(default_value, default)
end

if match = default_function&.match(/\Anextval\('"?(?<sequence_name>.+_(?<suffix>seq\d*))"?'::regclass\)\z/)
if (match = default_function&.match(/\Anextval\('"?(?<sequence_name>.+_(?<suffix>seq\d*))"?'::regclass\)\z/))
serial = sequence_name_from_parts(table_name, column_name, match[:suffix]) == match[:sequence_name]
end

Expand Down
Expand Up @@ -43,11 +43,11 @@ def geo_type(type = "GEOMETRY")
end

def limit_from_options(type, options = {})
spatial_type = geo_type(type)
spatial_type << "Z" if options[:has_z]
spatial_type << "M" if options[:has_m]
spatial_type << ",#{options[:srid] || default_srid(options)}"
spatial_type
has_z = options[:has_z] ? 'Z' : ''
has_m = options[:has_m] ? 'M' : ''
srid = options[:srid] || default_srid(options)
field_type = [geo_type(type), has_z, has_m].compact.join
"#{field_type},#{srid}"
end

def default_srid(options)
Expand Down
24 changes: 12 additions & 12 deletions lib/active_record/connection_adapters/postgis_adapter.rb
Expand Up @@ -9,18 +9,18 @@

require "active_record/connection_adapters"
require "active_record/connection_adapters/postgresql_adapter"
require "active_record/connection_adapters/postgis/version"
require "active_record/connection_adapters/postgis/column_methods"
require "active_record/connection_adapters/postgis/schema_statements"
require "active_record/connection_adapters/postgis/database_statements"
require "active_record/connection_adapters/postgis/spatial_column_info"
require "active_record/connection_adapters/postgis/spatial_table_definition"
require "active_record/connection_adapters/postgis/spatial_column"
require "active_record/connection_adapters/postgis/arel_tosql"
require "active_record/connection_adapters/postgis/oid/spatial"
require "active_record/connection_adapters/postgis/oid/date_time"
require "active_record/connection_adapters/postgis/type" # has to be after oid/*
require "active_record/connection_adapters/postgis/create_connection"
require_relative "postgis/version"
require_relative "postgis/column_methods"
require_relative "postgis/schema_statements"
require_relative "postgis/database_statements"
require_relative "postgis/spatial_column_info"
require_relative "postgis/spatial_table_definition"
require_relative "postgis/spatial_column"
require_relative "postgis/arel_tosql"
require_relative "postgis/oid/spatial"
require_relative "postgis/oid/date_time"
require_relative "postgis/type" # has to be after oid/*
require_relative "postgis/create_connection"
# :startdoc:

module ActiveRecord
Expand Down
2 changes: 1 addition & 1 deletion lib/activerecord-postgis-adapter.rb
@@ -1,3 +1,3 @@
# frozen_string_literal: true

require "active_record/connection_adapters/postgis_adapter"
require_relative "active_record/connection_adapters/postgis_adapter"
4 changes: 2 additions & 2 deletions test/cases/setup_test.rb
Expand Up @@ -5,15 +5,15 @@
module PostGIS
class SpatialQueriesTest < ActiveSupport::TestCase
def test_ignore_tables
expect_to_ignore = %w(
expect_to_ignore = %w[
geography_columns
geometry_columns
layer
raster_columns
raster_overviews
spatial_ref_sys
topology
)
]
assert_equal expect_to_ignore, ::ActiveRecord::SchemaDumper.ignore_tables
end
end
Expand Down
1 change: 0 additions & 1 deletion test/test_helper.rb
Expand Up @@ -2,7 +2,6 @@

require "bundler/setup"
Bundler.require :development

require "minitest/autorun"
require "minitest/pride"
require "mocha/minitest"
Expand Down

0 comments on commit 8fb63ee

Please sign in to comment.