Skip to content

Commit

Permalink
Update MySQL support in tests and add RuboCop dependency; refactor co…
Browse files Browse the repository at this point in the history
…de for clarity
  • Loading branch information
jeff.dean committed Mar 4, 2025
1 parent 83cb6a9 commit 0e4131a
Show file tree
Hide file tree
Showing 10 changed files with 84 additions and 136 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
ruby: ['3.3', '3.2', '3.1']
gemfile:
- gemfiles/ar72.gemfile
mysql: ['5.7']
mysql: ['5.7', '8.0']
steps:
- name: Set Up Actions
uses: actions/checkout@v4
Expand Down
123 changes: 34 additions & 89 deletions .rubocop_todo.yml
Original file line number Diff line number Diff line change
@@ -1,104 +1,72 @@
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2021-04-14 06:09:44 UTC using RuboCop version 1.12.0.
# on 2025-03-04 02:04:05 UTC using RuboCop version 1.73.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.

# Offense count: 6
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
# Include: **/*.gemfile, **/Gemfile, **/gems.rb
Bundler/OrderedGems:
Exclude:
- 'Gemfile'
- 'gemfiles/ar72.gemfile'

# Offense count: 2
# Cop supports --auto-correct.
# Offense count: 3
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
# Include: **/*.gemspec
Gemspec/OrderedDependencies:
Exclude:
- 'activerecord-mysql2rgeo-adapter.gemspec'

# Offense count: 1
# Configuration parameters: Severity, Include.
# Include: **/*.gemspec
Gemspec/RequiredRubyVersion:
Exclude:
- 'activerecord-mysql2rgeo-adapter.gemspec'

# Offense count: 21
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
# SupportedHashRocketStyles: key, separator, table
# SupportedColonStyles: key, separator, table
# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
Layout/HashAlignment:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/schema_statements.rb'
- 'lib/active_record/connection_adapters/mysql2rgeo/spatial_column_info.rb'
- 'lib/active_record/connection_adapters/mysql2rgeo_adapter.rb'

# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
# SupportedStyles: normal, indented_internal_methods
Layout/IndentationConsistency:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/schema_creation.rb'

# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: Width, IgnoredPatterns.
Layout/IndentationWidth:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/schema_creation.rb'

# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
# URISchemes: http, https
Layout/LineLength:
Max: 147

# Offense count: 2
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: final_newline, final_blank_line
Layout/TrailingEmptyLines:
Exclude:
- 'Gemfile'
- 'lib/active_record/connection_adapters/mysql2rgeo/schema_creation.rb'

# Offense count: 3
# Configuration parameters: AllowSafeAssignment.
Lint/AssignmentInCondition:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/schema_creation.rb'

# Offense count: 1
# Configuration parameters: AllowedParentClasses.
Lint/MissingSuper:
Exclude:
- 'lib/active_record/type/spatial.rb'

# Offense count: 1
Lint/UselessAssignment:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/schema_statements.rb'

# Offense count: 24
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 66

# Offense count: 2
# Configuration parameters: CountComments, CountAsOne.
Metrics/ClassLength:
Max: 271

# Offense count: 1
# Configuration parameters: IgnoredMethods.
Metrics/CyclomaticComplexity:
Max: 11
Max: 268

# Offense count: 25
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
# Offense count: 24
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
Metrics/MethodLength:
Max: 23

Expand All @@ -107,38 +75,36 @@ Metrics/MethodLength:
Metrics/ParameterLists:
Max: 9

# Offense count: 2
# Configuration parameters: IgnoredMethods.
Metrics/PerceivedComplexity:
Max: 11

# Offense count: 1
Naming/AccessorMethodName:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/spatial_column.rb'

# Offense count: 1
# Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, Regex, IgnoreExecutableScripts, AllowedAcronyms.
# Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, CheckDefinitionPathHierarchyRoots, Regex, IgnoreExecutableScripts, AllowedAcronyms.
# CheckDefinitionPathHierarchyRoots: lib, spec, test, src
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
Naming/FileName:
Exclude:
- 'Rakefile.rb'
- 'lib/activerecord-mysql2rgeo-adapter.rb'

# Offense count: 2
# Configuration parameters: IgnoredPatterns.
# Configuration parameters: EnforcedStyle, AllowedPatterns.
# SupportedStyles: snake_case, camelCase
Naming/MethodName:
EnforcedStyle: snake_case
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/arel_tosql.rb'

# Offense count: 1
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
# AllowedNames: at, by, db, id, in, io, ip, of, on, os, pp, to
# AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
Naming/MethodParameterName:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/schema_statements.rb'
- 'lib/active_record/connection_adapters/mysql2rgeo_adapter.rb'

# Offense count: 2
# Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros.
# Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros, UseSorbetSigs.
# NamePrefix: is_, has_, have_
# ForbiddenPrefixes: is_, has_, have_
# AllowedMethods: is_a?
Expand All @@ -148,14 +114,7 @@ Naming/PredicateName:
- 'spec/**/*'
- 'lib/active_record/connection_adapters/mysql2rgeo/spatial_column.rb'

# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AllowOnConstant.
Style/CaseEquality:
Exclude:
- 'lib/active_record/type/spatial.rb'

# Offense count: 7
# Offense count: 6
# Configuration parameters: AllowedConstants.
Style/Documentation:
Exclude:
Expand All @@ -168,14 +127,14 @@ Style/Documentation:
- 'lib/active_record/connection_adapters/mysql2rgeo_adapter.rb'

# Offense count: 2
# Configuration parameters: MinBodyLength.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: MinBodyLength, AllowConsecutiveConditionals.
Style/GuardClause:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/create_connection.rb'
- 'lib/active_record/connection_adapters/mysql2rgeo/spatial_column.rb'

# Offense count: 5
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
Style/IfUnlessModifier:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/arel_tosql.rb'
Expand All @@ -196,35 +155,21 @@ Style/OptionalBooleanParameter:
- 'lib/active_record/connection_adapters/mysql2rgeo/spatial_column.rb'

# Offense count: 4
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
Style/ParallelAssignment:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/arel_tosql.rb'
- 'lib/active_record/connection_adapters/mysql2rgeo/schema_statements.rb'

# Offense count: 1
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: PreferredDelimiters.
Style/PercentLiteralDelimiters:
Exclude:
- 'Rakefile'

# Offense count: 1
# Cop supports --auto-correct.
# This cop supports safe autocorrection (--autocorrect).
Style/RedundantFileExtensionInRequire:
Exclude:
- 'activerecord-mysql2rgeo-adapter.gemspec'

# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: AllowModifier.
Style/SoleNestedConditional:
Exclude:
- 'lib/active_record/connection_adapters/mysql2rgeo/schema_creation.rb'
- 'lib/active_record/connection_adapters/mysql2rgeo/spatial_column.rb'

# Offense count: 1
# Cop supports --auto-correct.
Style/UnpackFirst:
Exclude:
- 'lib/active_record/type/spatial.rb'
1 change: 1 addition & 0 deletions activerecord-mysql2rgeo-adapter.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
spec.add_development_dependency "minitest", "~> 5.4"
spec.add_development_dependency "mocha", "~> 2.1"
spec.add_development_dependency "appraisal", "~> 2.0"
spec.add_development_dependency "rubocop"
end
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ module Visitors # :nodoc:
MySQL
end

class Mysql2Rgeo < MySQLSuperclass # :nodoc:
class Mysql2Rgeo < MySQLSuperclass # :nodoc:
include RGeo::ActiveRecord::SpatialToSql

if ::Arel::Visitors.const_defined?(:BindVisitor)
Expand All @@ -31,7 +31,7 @@ def visit_String(node, collector)
collector << if srid == 0
"#{st_func('ST_WKTToSQL')}(#{quote(node)})"
else
"#{st_func('ST_WKTToSQL')}(#{quote(node)}, #{srid})"
"#{st_func('ST_WKTToSQL')}(#{quote(node)}, #{srid}, 'axis-order=long-lat')"
end
end

Expand All @@ -46,7 +46,7 @@ def visit_in_spatial_context(node, collector)
collector << if srid == 0
"#{st_func('ST_WKTToSQL')}(#{quote(node)})"
else
"#{st_func('ST_WKTToSQL')}(#{quote(node)}, #{srid})"
"#{st_func('ST_WKTToSQL')}(#{quote(node)}, #{srid}, 'axis-order=long-lat')"
end
when RGeo::Feature::Instance
collector << visit_RGeo_Feature_Instance(node, collector)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ module Mysql2Rgeo
class SchemaCreation < MySQL::SchemaCreation # :nodoc:
private

def add_column_options!(sql, options)
if options[:srid]
sql << " /*!80003 SRID #{options[:srid]} */"
end

super
def add_column_options!(sql, options)
if options[:srid]
sql << " /*!80003 SRID #{options[:srid]} */"
end

super
end
end
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ module SchemaStatements
# super: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb

# override
def indexes(table_name) #:nodoc:
def indexes(table_name) # :nodoc:
indexes = super
# HACK(aleks, 06/15/18): MySQL 5 does not support prefix lengths for spatial indexes
# https://dev.mysql.com/doc/refman/5.6/en/create-index.html
Expand All @@ -19,7 +19,7 @@ def indexes(table_name) #:nodoc:

# override
def type_to_sql(type, limit: nil, precision: nil, scale: nil, unsigned: nil, **) # :nodoc:
if (info = RGeo::ActiveRecord.geometric_type_from_name(type.to_s.delete("_")))
if RGeo::ActiveRecord.geometric_type_from_name(type.to_s.delete("_"))
type = limit[:type] || type if limit.is_a?(::Hash)
type = type.to_s.delete("_").upcase
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ module ActiveRecord # :nodoc:
module ConnectionAdapters # :nodoc:
module Mysql2Rgeo # :nodoc:
class SpatialColumn < ConnectionAdapters::MySQL::Column # :nodoc:
def initialize(name, default, sql_type_metadata = nil, null = true, default_function = nil, collation: nil, comment: nil, spatial: nil, **)
def initialize(name, default, sql_type_metadata = nil, null = true, default_function = nil, collation: nil, comment: nil,
spatial: nil, **)
@sql_type_metadata = sql_type_metadata
if spatial
# This case comes from an entry in the geometry_columns table
Expand All @@ -18,10 +19,8 @@ def initialize(name, default, sql_type_metadata = nil, null = true, default_func
build_from_sql_type(sql_type_metadata.sql_type)
end
super(name, default, sql_type_metadata, null, default_function, collation: collation, comment: comment)
if spatial?
if @srid
@limit = { type: geometric_type.type_name.underscore, srid: @srid }
end
if spatial? && @srid
@limit = { type: geometric_type.type_name.underscore, srid: @srid }
end
end

Expand Down
Loading

0 comments on commit 0e4131a

Please sign in to comment.