achirkunov-spatial_adapter 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,79 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+ require 'spatial_adapter/postgresql'
3
+
4
+ describe "Spatially-enabled Schema Dumps" do
5
+ before :all do
6
+ postgis_connection
7
+ @connection = ActiveRecord::Base.connection
8
+
9
+ # Create a new table
10
+ ActiveRecord::Schema.define do
11
+ create_table :migrated_geometry_models, :force => true do |t|
12
+ t.integer :extra
13
+ t.point :geom, :with_m => true, :with_z => true, :srid => 4326
14
+ end
15
+ add_index :migrated_geometry_models, :geom, :spatial => true, :name => 'test_spatial_index'
16
+
17
+ create_table :migrated_geography_models, :force => true do |t|
18
+ t.integer :extra
19
+ t.point :geom, :with_m => true, :with_z => true, :geographic => true
20
+ end
21
+ end
22
+
23
+ File.open('schema.rb', "w") do |file|
24
+ ActiveRecord::SchemaDumper.dump(@connection, file)
25
+ end
26
+
27
+ # Drop the original tables
28
+ @connection.drop_table "migrated_geometry_models"
29
+ @connection.drop_table "migrated_geography_models"
30
+
31
+ # Load the dumped schema
32
+ load('schema.rb')
33
+ end
34
+
35
+ after :all do
36
+ # delete the schema file
37
+ File.delete('schema.rb')
38
+
39
+ # Drop the new tables
40
+ @connection.drop_table "migrated_geometry_models"
41
+ @connection.drop_table "migrated_geography_models"
42
+ end
43
+
44
+ it "should preserve spatial attributes of geometry tables" do
45
+ columns = @connection.columns("migrated_geometry_models")
46
+
47
+ columns.should have(3).items
48
+ geom_column = columns.select{|c| c.name == 'geom'}.first
49
+ geom_column.should be_a(SpatialAdapter::SpatialColumn)
50
+ geom_column.geometry_type.should == :point
51
+ geom_column.type.should == :string
52
+ geom_column.with_z.should == true
53
+ geom_column.with_m.should == true
54
+ geom_column.srid.should == 4326
55
+ end
56
+
57
+ it "should preserve spatial attributes of geography tables" do
58
+ columns = @connection.columns("migrated_geography_models")
59
+
60
+ columns.should have(3).items
61
+ geom_column = columns.select{|c| c.name == 'geom'}.first
62
+ geom_column.should be_a(SpatialAdapter::SpatialColumn)
63
+ geom_column.geometry_type.should == :point
64
+ geom_column.type.should == :string
65
+ geom_column.with_z.should == true
66
+ geom_column.with_m.should == true
67
+ geom_column.should be_geographic
68
+ end
69
+
70
+ it "should preserve spatial indexes" do
71
+ indexes = @connection.indexes("migrated_geometry_models")
72
+
73
+ indexes.should have(1).item
74
+
75
+ indexes.first.name.should == 'test_spatial_index'
76
+ indexes.first.columns.should == ["geom"]
77
+ indexes.first.spatial.should == true
78
+ end
79
+ end
@@ -0,0 +1,74 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ require 'geo_ruby'
4
+ gem 'activerecord', '=3.0.0.beta3'
5
+ require 'active_record'
6
+
7
+ $:.unshift((File.join(File.dirname(__FILE__), '..', 'lib')))
8
+
9
+ include GeoRuby::SimpleFeatures
10
+
11
+
12
+ def postgis_connection
13
+ ActiveRecord::Base.establish_connection(
14
+ :adapter => 'postgresql',
15
+ :database => 'spatial_adapter'
16
+ )
17
+ # Turn off those annoying NOTICE messages
18
+ ActiveRecord::Base.connection.execute 'set client_min_messages = warning'
19
+ ActiveRecord::Migration.verbose = false
20
+ end
21
+
22
+ def mysql_connection
23
+ ActiveRecord::Base.establish_connection(
24
+ :adapter => 'mysql',
25
+ :database => 'spatial_adapter',
26
+ :username => 'root',
27
+ :host => 'localhost'
28
+ )
29
+ ActiveRecord::Migration.verbose = false
30
+ end
31
+
32
+ class GeometryFactory
33
+ class << self
34
+ def point
35
+ Point.from_x_y(1, 2, 4326)
36
+ end
37
+
38
+ def line_string
39
+ LineString.from_coordinates([[1.4,2.5],[1.5,6.7]], 4326)
40
+ end
41
+
42
+ def polygon
43
+ Polygon.from_coordinates([[[12.4,-45.3],[45.4,41.6],[4.456,1.0698],[12.4,-45.3]],[[2.4,5.3],[5.4,1.4263],[14.46,1.06],[2.4,5.3]]], 4326)
44
+ end
45
+
46
+ def multi_point
47
+ MultiPoint.from_coordinates([[12.4,-23.3],[-65.1,23.4],[23.55555555,23]], 4326)
48
+ end
49
+
50
+ def multi_line_string
51
+ MultiLineString.from_line_strings([LineString.from_coordinates([[1.5,45.2],[-54.12312,-0.012]]),LineString.from_coordinates([[1.5,45.2],[-54.12312,-0.012],[45.123,23.3]])], 4326)
52
+ end
53
+
54
+ def multi_polygon
55
+ MultiPolygon.from_polygons([Polygon.from_coordinates([[[12.4,-45.3],[45.4,41.6],[4.456,1.0698],[12.4,-45.3]],[[2.4,5.3],[5.4,1.4263],[14.46,1.06],[2.4,5.3]]]),Polygon.from_coordinates([[[0,0],[4,0],[4,4],[0,4],[0,0]],[[1,1],[3,1],[3,3],[1,3],[1,1]]])], 4326)
56
+ end
57
+
58
+ def geometry_collection
59
+ GeometryCollection.from_geometries([Point.from_x_y(4.67,45.4),LineString.from_coordinates([[5.7,12.45],[67.55,54]])], 4326)
60
+ end
61
+
62
+ def pointz
63
+ Point.from_x_y_z(1, 2, 3, 4326)
64
+ end
65
+
66
+ def pointm
67
+ Point.from_x_y_m(1, 2, 3, 4326)
68
+ end
69
+
70
+ def point4
71
+ Point.from_x_y_z_m(1, 2, 3, 4, 4326)
72
+ end
73
+ end
74
+ end
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: achirkunov-spatial_adapter
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Pete Deffendol
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-04-20 00:00:00 +04:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activerecord
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 3
29
+ - 0
30
+ - 0
31
+ - beta3
32
+ version: 3.0.0.beta3
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: GeoRuby
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 1
44
+ - 3
45
+ - 0
46
+ version: 1.3.0
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ description: Provides enhancements to ActiveRecord to handle spatial datatypes in PostgreSQL and MySQL.
50
+ email: pete@fragility.us
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files:
56
+ - README.rdoc
57
+ files:
58
+ - MIT-LICENSE
59
+ - README.rdoc
60
+ - VERSION
61
+ - lib/spatial_adapter.rb
62
+ - lib/spatial_adapter/common/raw_geom_info.rb
63
+ - lib/spatial_adapter/common/schema_definitions.rb
64
+ - lib/spatial_adapter/common/schema_dumper.rb
65
+ - lib/spatial_adapter/common/spatial_column.rb
66
+ - lib/spatial_adapter/common/table_definition.rb
67
+ - lib/spatial_adapter/mysql.rb
68
+ - lib/spatial_adapter/postgresql.rb
69
+ - rails/init.rb
70
+ has_rdoc: true
71
+ homepage: http://github.com/achirkunov/spatial_adapter
72
+ licenses: []
73
+
74
+ post_install_message:
75
+ rdoc_options:
76
+ - --charset=UTF-8
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ segments:
84
+ - 0
85
+ version: "0"
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ segments:
91
+ - 0
92
+ version: "0"
93
+ requirements: []
94
+
95
+ rubyforge_project:
96
+ rubygems_version: 1.3.6
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: Spatial Adapter for ActiveRecord
100
+ test_files:
101
+ - spec/db/mysql_raw.rb
102
+ - spec/db/postgis_raw.rb
103
+ - spec/models/common.rb
104
+ - spec/mysql/connection_adapter_spec.rb
105
+ - spec/mysql/migration_spec.rb
106
+ - spec/mysql/models_spec.rb
107
+ - spec/mysql/schema_dumper_spec.rb
108
+ - spec/postgresql/connection_adapter_spec.rb
109
+ - spec/postgresql/migration_spec.rb
110
+ - spec/postgresql/models_spec.rb
111
+ - spec/postgresql/schema_dumper_spec.rb
112
+ - spec/spec_helper.rb
113
+ - spec/README.txt