rgeo-activerecord 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +4 -0
- data/README.rdoc +2 -1
- data/Version +1 -1
- data/lib/rgeo/active_record/arel_modifications.rb +8 -32
- data/lib/rgeo/active_record/task_hacker.rb +13 -1
- metadata +18 -3
data/History.rdoc
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
=== 0.2.3 / 2011-01-07
|
2
|
+
|
3
|
+
* Updated gem dependencies to include Arel 2.0.6, since some earlier Arel versions weren't working. (Reported by Pirmin Kalberer.)
|
4
|
+
|
1
5
|
=== 0.2.2 / 2011-01-06
|
2
6
|
|
3
7
|
* Some adjustments to the Arel integration for future Arel compatibility. (Thanks to Aaron Patterson.)
|
data/README.rdoc
CHANGED
@@ -23,8 +23,9 @@ interact directly with this library
|
|
23
23
|
RGeo::ActiveRecord has the following requirements:
|
24
24
|
|
25
25
|
* Ruby 1.8.7 or later. Ruby 1.9.2 or later preferred.
|
26
|
-
* \RGeo 0.2.
|
26
|
+
* \RGeo 0.2.4 or later.
|
27
27
|
* \ActiveRecord 3.0.3 or later. Earlier versions will not work.
|
28
|
+
* \Arel 2.0.6 or later. Earlier versions will not work.
|
28
29
|
|
29
30
|
Generally, \ActiveRecord adapters which depend on this module should be
|
30
31
|
installed as gems, and they will install this module automatically as
|
data/Version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
@@ -37,37 +37,13 @@
|
|
37
37
|
require 'arel'
|
38
38
|
|
39
39
|
|
40
|
-
# The rgeo-activerecord gem installs several hacks into Arel to
|
41
|
-
# geometry values
|
42
|
-
#
|
43
|
-
# To support geometry values as nodes in the Arel AST, we need to provide
|
44
|
-
# a way for visitors to handle nodes that are feature objects.
|
45
|
-
# Generally, this is accomplished by writing (or aliasing) methods in the
|
46
|
-
# visitor of the form "visit_<classname>". Arel will dispatch to a method
|
47
|
-
# based on the class of the object in the AST. Unfortunately, RGeo feature
|
48
|
-
# objects usually have opaque classes; plus, there are so many different
|
49
|
-
# classes as to make it infeasible to list all of them. Therefore, we hack
|
50
|
-
# Arel::Visitors::Visitor#visit to explicitly recognize the
|
51
|
-
# RGeo::Feature::Instance marker module, and we define the method
|
52
|
-
# visit_RGeo_Feature_Instance. In the various visitors (Dot, DepthFirst,
|
53
|
-
# and ToSql), this method is aliased in the same way as the other raw
|
54
|
-
# values. For the ToSql visitor, this means aliasing to visit_String,
|
55
|
-
# which then depends on the quoting implemented by the connection adapter
|
56
|
-
# to convert to a SQL literal.
|
57
|
-
#
|
58
|
-
# To support geometry columns, we define Arel::Attributes::Geometry, and
|
59
|
-
# we hack Arel::Attributes::for to map the :geometry column type to that
|
60
|
-
# new attribute. We then add the appropriate alias for the
|
61
|
-
# visit_Arel_Attributes_Geometry method to the visitors.
|
62
|
-
|
40
|
+
# The rgeo-activerecord gem installs several minor hacks into Arel to
|
41
|
+
# support geometry values in the AST.
|
63
42
|
module Arel
|
64
43
|
|
65
|
-
# :stopdoc:
|
66
|
-
|
67
|
-
|
68
44
|
# Hack Attributes dispatcher to recognize geometry columns.
|
69
45
|
# This is deprecated but necessary to support legacy Arel versions.
|
70
|
-
module Attributes
|
46
|
+
module Attributes # :nodoc:
|
71
47
|
class << self
|
72
48
|
if method_defined?(:for)
|
73
49
|
alias_method :for_without_geometry, :for
|
@@ -78,25 +54,25 @@ module Arel
|
|
78
54
|
end
|
79
55
|
end
|
80
56
|
|
57
|
+
# Visitors are modified to handle RGeo::Feature::Instance objects in
|
58
|
+
# the AST.
|
81
59
|
module Visitors
|
82
60
|
|
83
|
-
#
|
61
|
+
# RGeo adds visit_RGeo_Feature_Instance to the Dot visitor.
|
84
62
|
class Dot
|
85
63
|
alias :visit_RGeo_Feature_Instance :visit_String
|
86
64
|
end
|
87
65
|
|
88
|
-
#
|
66
|
+
# RGeo adds visit_RGeo_Feature_Instance to the DepthFirst visitor.
|
89
67
|
class DepthFirst
|
90
68
|
alias :visit_RGeo_Feature_Instance :terminal
|
91
69
|
end
|
92
70
|
|
93
|
-
#
|
71
|
+
# RGeo adds visit_RGeo_Feature_Instance to the ToSql visitor.
|
94
72
|
class ToSql
|
95
73
|
alias :visit_RGeo_Feature_Instance :visit_String
|
96
74
|
end
|
97
75
|
|
98
76
|
end
|
99
77
|
|
100
|
-
# :startdoc:
|
101
|
-
|
102
78
|
end
|
@@ -39,7 +39,7 @@ module RGeo
|
|
39
39
|
module ActiveRecord
|
40
40
|
|
41
41
|
|
42
|
-
# A set of tools for hacking Rake tasks.
|
42
|
+
# A set of tools for hacking ActiveRecord's Rake tasks.
|
43
43
|
|
44
44
|
module TaskHacker
|
45
45
|
|
@@ -70,6 +70,18 @@ module RGeo
|
|
70
70
|
class << self
|
71
71
|
|
72
72
|
|
73
|
+
# Modify a named ActiveRecord rake task.
|
74
|
+
# The task must be of the form that hinges on the database adapter
|
75
|
+
# name. You must provide the fully-qualified name of the rake task
|
76
|
+
# to modify, the Rails environment for which to get the database
|
77
|
+
# configuration (which may be nil to use the current Rails.env),
|
78
|
+
# a Regexp or String identifying the adapter name for which to
|
79
|
+
# modify the rake task, and a block. If the database adapter
|
80
|
+
# associated with the given environment matches the given pattern,
|
81
|
+
# then the rake task's action(s) will be replaced by the given
|
82
|
+
# block. The block will be passed the environment's database
|
83
|
+
# configuration hash.
|
84
|
+
|
73
85
|
def modify(name_, env_, pattern_, &block_)
|
74
86
|
::Rake::Task[name_].actions.unshift(Action.new(env_, pattern_, block_))
|
75
87
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 3
|
9
|
+
version: 0.2.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Daniel Azuma
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-01-
|
17
|
+
date: 2011-01-07 00:00:00 -08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -47,6 +47,21 @@ dependencies:
|
|
47
47
|
version: 3.0.3
|
48
48
|
type: :runtime
|
49
49
|
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: arel
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
segments:
|
59
|
+
- 2
|
60
|
+
- 0
|
61
|
+
- 6
|
62
|
+
version: 2.0.6
|
63
|
+
type: :runtime
|
64
|
+
version_requirements: *id003
|
50
65
|
description: RGeo is a geospatial data library for Ruby. RGeo::ActiveRecord is an optional RGeo module providing some spatial extensions to ActiveRecord, as well as common tools used by RGeo-based spatial adapters.
|
51
66
|
email: dazuma@gmail.com
|
52
67
|
executables: []
|