rgeo-activerecord 0.4.6 → 0.5.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
data/History.rdoc CHANGED
@@ -1,3 +1,8 @@
1
+ === 0.5.0.beta1 / 2013-02-04
2
+
3
+ * Updates for compatibility with Rails 4 and support of Rails 4 oriented adapters.
4
+ * Testing tool is better factored to allow customization of cleanup
5
+
1
6
  === 0.4.6 / 2012-12-11
2
7
 
3
8
  * You can now provide both a default and an override database config file in the test helper.
data/README.rdoc CHANGED
@@ -27,6 +27,9 @@ RGeo::ActiveRecord has the following requirements:
27
27
  Should be compatible with Rails versions through 3.2.x.
28
28
  * arel 2.0.6 or later. Earlier versions will not work.
29
29
 
30
+ This version of rgeo-activerecord also includes experimental support for
31
+ the (unreleased as of this writing) version 4.0 of Rails.
32
+
30
33
  Generally, \ActiveRecord adapters which depend on this module should be
31
34
  installed as gems, and they will install this module automatically as
32
35
  a dependency. However, you can also install it manually as a gem:
@@ -37,17 +40,6 @@ a dependency. However, you can also install it manually as a gem:
37
40
  See the README for the "rgeo" gem, a required dependency, for further
38
41
  installation information.
39
42
 
40
- === To-do list
41
-
42
- We consider this gem to be in a late alpha state. There are a still a
43
- few holes in the intended functionality, but it is now being tested in a
44
- variety of contexts, and we know of several successful production
45
- deployments.
46
-
47
- We are also currently working on a mechanism for constructing complex
48
- spatial queries via extensions to Arel. This work is in the experimental
49
- stage.
50
-
51
43
  === Development and support
52
44
 
53
45
  Documentation is available at http://dazuma.github.com/rgeo-activerecord/rdoc
@@ -70,7 +62,7 @@ Development is supported by Pirq. (http://pirq.com).
70
62
 
71
63
  === License
72
64
 
73
- Copyright 2010-2012 Daniel Azuma
65
+ Copyright 2010-2013 Daniel Azuma
74
66
 
75
67
  All rights reserved.
76
68
 
data/Version CHANGED
@@ -1 +1 @@
1
- 0.4.6
1
+ 0.5.0.beta1
@@ -67,7 +67,7 @@ module RGeo
67
67
  database_config_ = ::YAML.load_file(klass_.const_get(:OVERRIDE_DATABASE_CONFIG_PATH)) rescue nil
68
68
  database_config_ ||= ::YAML.load_file(klass_.const_get(:DATABASE_CONFIG_PATH)) rescue nil
69
69
  if database_config_
70
- database_config_.symbolize_keys!
70
+ database_config_.stringify_keys!
71
71
  if klass_.respond_to?(:before_open_database)
72
72
  klass_.before_open_database(:config => database_config_)
73
73
  end
@@ -112,6 +112,7 @@ module RGeo
112
112
  @factory = ::RGeo::Cartesian.preferred_factory(:srid => 3785)
113
113
  @geographic_factory = ::RGeo::Geographic.spherical_factory(:srid => 4326)
114
114
  cleanup_tables
115
+ cleanup_caches
115
116
  end
116
117
 
117
118
 
@@ -119,6 +120,7 @@ module RGeo
119
120
 
120
121
  def teardown
121
122
  cleanup_tables
123
+ cleanup_caches
122
124
  end
123
125
 
124
126
 
@@ -132,21 +134,30 @@ module RGeo
132
134
  if klass_.connection.tables.include?('spatial_test')
133
135
  klass_.connection.drop_table(:spatial_test)
134
136
  end
137
+ end
138
+
139
+
140
+ # Utility method that cleans up any schema info that was cached by
141
+ # ActiveRecord during a test. Normally called automatically at setup
142
+ # and teardown. If you override those methods, you'll need to call
143
+ # this from your method.
144
+
145
+ def cleanup_caches
146
+ klass_ = self.class.const_get(:DEFAULT_AR_CLASS)
135
147
  # Clear any RGeo factory settings.
136
148
  klass_.connection_pool.rgeo_factory_settings.clear!
137
149
  # Clear out any ActiveRecord caches that are present.
138
- # Different 3.x versions use different types of caches.
139
- if klass_.connection_pool.respond_to?(:clear_cache!)
140
- if klass_.connection.respond_to?(:schema_cache)
141
- # 3.2.x
142
- klass_.connection_pool.with_connection do |c_|
143
- c_.schema_cache.clear!
144
- end
145
- else
146
- # 3.1.x
147
- klass_.connection_pool.clear_cache!
150
+ # Different Rails versions use different types of caches.
151
+ klass_.connection_pool.with_connection do |c_|
152
+ if c_.respond_to?(:schema_cache)
153
+ # 3.2.x and 4.0.x
154
+ c_.schema_cache.clear!
148
155
  end
149
156
  end
157
+ if klass_.connection_pool.respond_to?(:clear_cache!)
158
+ # 3.1.x
159
+ klass_.connection_pool.clear_cache!
160
+ end
150
161
  if klass_.connection.respond_to?(:clear_cache!)
151
162
  # 3.1 and above
152
163
  klass_.connection.clear_cache!
@@ -65,7 +65,8 @@ module RGeo
65
65
 
66
66
  # Index definition struct with a spatial flag field.
67
67
 
68
- class SpatialIndexDefinition < ::Struct.new(:table, :name, :unique, :columns, :lengths, :spatial)
68
+ class SpatialIndexDefinition < ::ActiveRecord::ConnectionAdapters::IndexDefinition
69
+ attr_accessor :spatial
69
70
  end
70
71
 
71
72
 
@@ -92,7 +93,9 @@ module RGeo
92
93
  # Provide methods for each geometric subtype during table definitions.
93
94
 
94
95
  ::ActiveRecord::ConnectionAdapters::TableDefinition.class_eval do
96
+
95
97
  alias_method :method_missing_without_rgeo_modification, :method_missing
98
+
96
99
  def method_missing(method_name_, *args_, &block_)
97
100
  if @base.respond_to?(:spatial_column_constructor) && (info_ = @base.spatial_column_constructor(method_name_))
98
101
  info_ = info_.dup
@@ -105,13 +108,16 @@ module RGeo
105
108
  method_missing_without_rgeo_modification(method_name_, *args_, &block_)
106
109
  end
107
110
  end
111
+
108
112
  end
109
113
 
110
114
 
111
115
  # Provide methods for each geometric subtype during table changes.
112
116
 
113
117
  ::ActiveRecord::ConnectionAdapters::Table.class_eval do
118
+
114
119
  alias_method :method_missing_without_rgeo_modification, :method_missing
120
+
115
121
  def method_missing(method_name_, *args_, &block_)
116
122
  if @base.respond_to?(:spatial_column_constructor) && (info_ = @base.spatial_column_constructor(method_name_))
117
123
  info_ = info_.dup
@@ -124,14 +130,18 @@ module RGeo
124
130
  method_missing_without_rgeo_modification(method_name_, *args_, &block_)
125
131
  end
126
132
  end
133
+
127
134
  end
128
135
 
129
136
 
130
137
  # Hack schema dumper to output spatial index flag
131
138
 
132
139
  ::ActiveRecord::SchemaDumper.class_eval do
140
+
133
141
  private
142
+
134
143
  alias_method :_old_indexes_method, :indexes
144
+
135
145
  def indexes(table_, stream_)
136
146
  if (indexes_ = @connection.indexes(table_)).any?
137
147
  add_index_statements_ = indexes_.map do |index_|
@@ -150,6 +160,7 @@ module RGeo
150
160
  stream_.puts
151
161
  end
152
162
  end
163
+
153
164
  end
154
165
 
155
166
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgeo-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
5
- prerelease:
4
+ version: 0.5.0.beta1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Daniel Azuma
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-12 00:00:00.000000000 Z
12
+ date: 2013-02-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rgeo
@@ -59,6 +59,38 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.0.6
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rdoc
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
62
94
  description: RGeo is a geospatial data library for Ruby. RGeo::ActiveRecord is an
63
95
  optional RGeo module providing some spatial extensions to ActiveRecord, as well
64
96
  as common tools used by RGeo-based spatial adapters.
@@ -103,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
135
  version: 1.3.1
104
136
  requirements: []
105
137
  rubyforge_project: virtuoso
106
- rubygems_version: 1.8.24
138
+ rubygems_version: 1.8.25
107
139
  signing_key:
108
140
  specification_version: 3
109
141
  summary: An RGeo module providing spatial extensions to ActiveRecord.