rgeo-activerecord 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 050dae83a358df1f39ade771d9a422d8fe9e15d7
4
+ data.tar.gz: 86c8fabb76788f275114d08cfd9568cf423a0fd5
5
+ SHA512:
6
+ metadata.gz: aa37b062ba3f81ec42cbd761807d3345ba5c022c665495b96600025dfd146b8400b9d585344705e7b46e95298fc2f492acb784e23482288db777f288db8eb988
7
+ data.tar.gz: 13b9d228dad1a0aaa3c707dc6d04cd0cb9ba99f78b71f3265a2d9fa2fd30aa6f18c1a69594997b2065571c90622af0242dce3b2cb3e514c402459640f3b51347
data/Version CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.6.0
@@ -62,13 +62,13 @@ module RGeo
62
62
  # mapping for the database, and it also uses the type information
63
63
  # in the node to determine when to cast string arguments to WKT,
64
64
 
65
- def visit_RGeo_ActiveRecord_SpatialNamedFunction(node_)
65
+ def visit_RGeo_ActiveRecord_SpatialNamedFunction(node_, *args)
66
66
  name_ = st_func(node_.name)
67
67
  exprs_ = []
68
68
  node_.expressions.each_with_index do |expr_, index_|
69
- exprs_ << (node_.spatial_argument?(index_) ? visit_in_spatial_context(expr_) : visit(expr_))
69
+ exprs_ << (node_.spatial_argument?(index_) ? visit_in_spatial_context(expr_, *args) : visit(expr_, *args))
70
70
  end
71
- "#{name_}(#{node_.distinct ? 'DISTINCT ' : ''}#{exprs_.join(', ')})#{node_.alias ? " AS #{visit node_.alias}" : ''}"
71
+ "#{name_}(#{node_.distinct ? 'DISTINCT ' : ''}#{exprs_.join(', ')})#{node_.alias ? " AS #{visit(node_.alias, *args)}" : ''}"
72
72
  end
73
73
 
74
74
 
@@ -76,16 +76,16 @@ module RGeo
76
76
  # The node must be a string (in which case it is treated as WKT),
77
77
  # an RGeo feature, or a spatial attribute.
78
78
 
79
- def visit_in_spatial_context(node_)
79
+ def visit_in_spatial_context(node_, *args)
80
80
  case node_
81
81
  when ::String
82
- "#{st_func('ST_WKTToSQL')}(#{visit_String(node_)})"
82
+ "#{st_func('ST_WKTToSQL')}(#{visit_String(node_, *args)})"
83
83
  when ::RGeo::Feature::Instance
84
- visit_RGeo_Feature_Instance(node_)
84
+ visit_RGeo_Feature_Instance(node_, *args)
85
85
  when ::RGeo::Cartesian::BoundingBox
86
- visit_RGeo_Cartesian_BoundingBox(node_)
86
+ visit_RGeo_Cartesian_BoundingBox(node_, *args)
87
87
  else
88
- visit(node_)
88
+ visit(node_, *args)
89
89
  end
90
90
  end
91
91
 
@@ -136,11 +136,11 @@ module RGeo
136
136
  # by default.
137
137
 
138
138
  ::Arel::Visitors::Visitor.class_eval do
139
- def visit_RGeo_ActiveRecord_SpatialConstantNode(node_)
139
+ def visit_RGeo_ActiveRecord_SpatialConstantNode(node_, *args)
140
140
  if respond_to?(:visit_in_spatial_context)
141
- visit_in_spatial_context(node_.delegate)
141
+ visit_in_spatial_context(node_.delegate, *args)
142
142
  else
143
- visit(node_.delegate)
143
+ visit(node_.delegate, *args)
144
144
  end
145
145
  end
146
146
  end
@@ -0,0 +1,124 @@
1
+ # From https://github.com/rails/arel/blob/4-0-stable/test/support/fake_record.rb
2
+ module FakeRecord
3
+ class Column < Struct.new(:name, :type)
4
+ end
5
+
6
+ class Connection
7
+ attr_reader :tables
8
+ attr_accessor :visitor
9
+
10
+ def initialize(visitor = nil)
11
+ @tables = %w{ users photos developers products}
12
+ @columns = {
13
+ 'users' => [
14
+ Column.new('id', :integer),
15
+ Column.new('name', :string),
16
+ Column.new('bool', :boolean),
17
+ Column.new('created_at', :date)
18
+ ],
19
+ 'products' => [
20
+ Column.new('id', :integer),
21
+ Column.new('price', :decimal)
22
+ ]
23
+ }
24
+ @columns_hash = {
25
+ 'users' => Hash[@columns['users'].map { |x| [x.name, x] }],
26
+ 'products' => Hash[@columns['products'].map { |x| [x.name, x] }]
27
+ }
28
+ @primary_keys = {
29
+ 'users' => 'id',
30
+ 'products' => 'id'
31
+ }
32
+ @visitor = visitor
33
+ end
34
+
35
+ def columns_hash table_name
36
+ @columns_hash[table_name]
37
+ end
38
+
39
+ def primary_key name
40
+ @primary_keys[name.to_s]
41
+ end
42
+
43
+ def table_exists? name
44
+ @tables.include? name.to_s
45
+ end
46
+
47
+ def columns name, message = nil
48
+ @columns[name.to_s]
49
+ end
50
+
51
+ def quote_table_name name
52
+ "\"#{name.to_s}\""
53
+ end
54
+
55
+ def quote_column_name name
56
+ "\"#{name.to_s}\""
57
+ end
58
+
59
+ def schema_cache
60
+ self
61
+ end
62
+
63
+ def quote thing, column = nil
64
+ if column && column.type == :integer
65
+ return 'NULL' if thing.nil?
66
+ return thing.to_i
67
+ end
68
+
69
+ case thing
70
+ when true
71
+ "'t'"
72
+ when false
73
+ "'f'"
74
+ when nil
75
+ 'NULL'
76
+ when Numeric
77
+ thing
78
+ else
79
+ "'#{thing}'"
80
+ end
81
+ end
82
+ end
83
+
84
+ class ConnectionPool
85
+ class Spec < Struct.new(:config)
86
+ end
87
+
88
+ attr_reader :spec, :connection
89
+
90
+ def initialize
91
+ @spec = Spec.new(:adapter => 'america')
92
+ @connection = Connection.new
93
+ @connection.visitor = Arel::Visitors::ToSql.new(connection)
94
+ end
95
+
96
+ def with_connection
97
+ yield connection
98
+ end
99
+
100
+ def table_exists? name
101
+ connection.tables.include? name.to_s
102
+ end
103
+
104
+ def columns_hash
105
+ connection.columns_hash
106
+ end
107
+
108
+ def schema_cache
109
+ connection
110
+ end
111
+ end
112
+
113
+ class Base
114
+ attr_accessor :connection_pool
115
+
116
+ def initialize
117
+ @connection_pool = ConnectionPool.new
118
+ end
119
+
120
+ def connection
121
+ connection_pool.connection
122
+ end
123
+ end
124
+ end
data/test/tc_basic.rb CHANGED
@@ -34,9 +34,7 @@
34
34
  ;
35
35
 
36
36
 
37
- require 'test/unit'
38
- require 'rgeo/active_record'
39
-
37
+ require 'test_helper'
40
38
 
41
39
  module RGeo
42
40
  module ActiveRecord
@@ -102,9 +100,21 @@ module RGeo
102
100
  assert_equal({'type' => 'Point', 'coordinates' => [1.0, 2.0]}, p_.as_json)
103
101
  end
104
102
 
103
+ def test_arel_visit_SpatialConstantNode
104
+ visitor = arel_visitor
105
+ sql = visitor.accept(Arel.spatial('POINT (1.0 2.0)'))
106
+ assert_equal("ST_WKTToSQL('POINT (1.0 2.0)')", sql)
107
+ end
105
108
 
109
+ # SpatialNamedFunction is not used in pre-2.1 Arel.
110
+ if(AREL_VERSION_MAJOR > 2 || (AREL_VERSION_MAJOR == 2 && AREL_VERSION_MINOR >= 1))
111
+ def test_arel_visit_SpatialNamedFunction
112
+ visitor = arel_visitor
113
+ sql = visitor.accept(Arel.spatial('POINT (1.0 2.0)').st_astext)
114
+ assert_equal("ST_AsText(ST_WKTToSQL('POINT (1.0 2.0)'))", sql)
115
+ end
116
+ end
106
117
  end
107
-
108
118
  end
109
119
  end
110
120
  end
@@ -0,0 +1,21 @@
1
+ require 'test/unit'
2
+ require 'rgeo/active_record'
3
+ require 'support/fake_record'
4
+
5
+ AREL_VERSION_MAJOR, AREL_VERSION_MINOR, AREL_VERSION_PATCH = ::Arel::VERSION.split('.').map { |part| part.to_i }
6
+ Arel::Visitors::PostgreSQL.send(:include, ::RGeo::ActiveRecord::SpatialToSql)
7
+ Arel::Table.engine = Arel::Sql::Engine.new(FakeRecord::Base.new)
8
+
9
+ def arel_visitor
10
+ # The argument for constructing visitor objects depends on the version of
11
+ # Arel.
12
+ if(AREL_VERSION_MAJOR <= 2)
13
+ if(AREL_VERSION_MAJOR == 2 && AREL_VERSION_MINOR == 0)
14
+ Arel::Visitors::PostgreSQL.new(Arel::Table.engine)
15
+ else
16
+ Arel::Visitors::PostgreSQL.new(Arel::Table.engine.connection_pool)
17
+ end
18
+ else
19
+ Arel::Visitors::PostgreSQL.new(Arel::Table.engine.connection)
20
+ end
21
+ end
metadata CHANGED
@@ -1,94 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgeo-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
5
- prerelease:
4
+ version: 0.6.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Daniel Azuma
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-27 00:00:00.000000000 Z
11
+ date: 2014-05-06 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rgeo
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 0.3.20
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: 0.3.20
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: activerecord
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: 3.0.3
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: 3.0.3
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: arel
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: 2.0.6
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: 2.0.6
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rake
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rdoc
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - ">="
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - ">="
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  description: RGeo is a geospatial data library for Ruby. RGeo::ActiveRecord is an
@@ -101,6 +90,11 @@ extra_rdoc_files:
101
90
  - History.rdoc
102
91
  - README.rdoc
103
92
  files:
93
+ - History.rdoc
94
+ - README.rdoc
95
+ - Version
96
+ - lib/rgeo-activerecord.rb
97
+ - lib/rgeo/active_record.rb
104
98
  - lib/rgeo/active_record/adapter_test_helper.rb
105
99
  - lib/rgeo/active_record/ar_factory_settings.rb
106
100
  - lib/rgeo/active_record/arel_spatial_queries.rb
@@ -109,35 +103,32 @@ files:
109
103
  - lib/rgeo/active_record/spatial_expressions.rb
110
104
  - lib/rgeo/active_record/task_hacker.rb
111
105
  - lib/rgeo/active_record/version.rb
112
- - lib/rgeo/active_record.rb
113
- - lib/rgeo-activerecord.rb
106
+ - test/support/fake_record.rb
114
107
  - test/tc_basic.rb
115
- - History.rdoc
116
- - README.rdoc
117
- - Version
108
+ - test/test_helper.rb
118
109
  homepage: http://dazuma.github.com/rgeo-activerecord
119
110
  licenses: []
111
+ metadata: {}
120
112
  post_install_message:
121
113
  rdoc_options: []
122
114
  require_paths:
123
115
  - lib
124
116
  required_ruby_version: !ruby/object:Gem::Requirement
125
- none: false
126
117
  requirements:
127
- - - ! '>='
118
+ - - ">="
128
119
  - !ruby/object:Gem::Version
129
120
  version: 1.8.7
130
121
  required_rubygems_version: !ruby/object:Gem::Requirement
131
- none: false
132
122
  requirements:
133
- - - ! '>'
123
+ - - ">="
134
124
  - !ruby/object:Gem::Version
135
- version: 1.3.1
125
+ version: '0'
136
126
  requirements: []
137
127
  rubyforge_project: virtuoso
138
- rubygems_version: 1.8.21
128
+ rubygems_version: 2.2.2
139
129
  signing_key:
140
- specification_version: 3
130
+ specification_version: 4
141
131
  summary: An RGeo module providing spatial extensions to ActiveRecord.
142
132
  test_files:
143
133
  - test/tc_basic.rb
134
+ has_rdoc: