ar-postgis 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. checksums.yaml +7 -0
  2. data/Documentation.rdoc +292 -0
  3. data/History.rdoc +147 -0
  4. data/LICENSE.txt +29 -0
  5. data/README.rdoc +78 -0
  6. data/lib/active_record/connection_adapters/postgis_adapter.rb +38 -0
  7. data/lib/active_record/connection_adapters/postgis_adapter/rails4/create_connection.rb +29 -0
  8. data/lib/active_record/connection_adapters/postgis_adapter/rails4/databases.rake +17 -0
  9. data/lib/active_record/connection_adapters/postgis_adapter/rails4/main_adapter.rb +202 -0
  10. data/lib/active_record/connection_adapters/postgis_adapter/rails4/postgis_database_tasks.rb +204 -0
  11. data/lib/active_record/connection_adapters/postgis_adapter/rails4/spatial_column.rb +184 -0
  12. data/lib/active_record/connection_adapters/postgis_adapter/rails4/spatial_table_definition.rb +121 -0
  13. data/lib/active_record/connection_adapters/postgis_adapter/railtie.rb +3 -0
  14. data/lib/active_record/connection_adapters/postgis_adapter/shared/arel_tosql.rb +23 -0
  15. data/lib/active_record/connection_adapters/postgis_adapter/shared/common_adapter_methods.rb +46 -0
  16. data/lib/active_record/connection_adapters/postgis_adapter/shared/railtie.rb +13 -0
  17. data/lib/active_record/connection_adapters/postgis_adapter/shared/setup.rb +21 -0
  18. data/lib/active_record/connection_adapters/postgis_adapter/version.rb +7 -0
  19. data/lib/activerecord-postgis-adapter.rb +1 -0
  20. data/test/database.yml +5 -0
  21. data/test/tc_basic.rb +212 -0
  22. data/test/tc_ddl.rb +303 -0
  23. data/test/tc_nested_class.rb +48 -0
  24. data/test/tc_spatial_queries.rb +126 -0
  25. data/test/tc_tasks.rb +112 -0
  26. metadata +149 -0
data/test/tc_tasks.rb ADDED
@@ -0,0 +1,112 @@
1
+ require 'minitest/autorun'
2
+ require 'rgeo/active_record/adapter_test_helper'
3
+
4
+ module RGeo
5
+ module ActiveRecord # :nodoc:
6
+ module PostGISAdapter # :nodoc:
7
+ module Tests # :nodoc:
8
+ class TestTasks < ::MiniTest::Test # :nodoc:
9
+ DATABASE_CONFIG_PATH = ::File.dirname(__FILE__)+'/database.yml'
10
+ OVERRIDE_DATABASE_CONFIG_PATH = ::File.dirname(__FILE__)+'/database_local.yml'
11
+
12
+ class << self
13
+ def before_open_database(args_)
14
+ @new_database_config = args_[:config].merge('database' => 'postgis_adapter_test2')
15
+ @new_database_config.stringify_keys!
16
+ end
17
+ attr_reader :new_database_config
18
+ end
19
+
20
+ include AdapterTestHelper
21
+
22
+ def cleanup_tables
23
+ ::ActiveRecord::Base.remove_connection
24
+ ::ActiveRecord::Base.clear_active_connections!
25
+ TestTasks::DEFAULT_AR_CLASS.connection.execute("DROP DATABASE IF EXISTS \"postgis_adapter_test2\"")
26
+ end
27
+
28
+ define_test_methods do
29
+ def test_create_database_from_extension_in_public_schema
30
+ ::ActiveRecord::Tasks::DatabaseTasks.create(TestTasks.new_database_config)
31
+ ::ActiveRecord::Base.connection.select_values("SELECT * from public.spatial_ref_sys")
32
+ end
33
+
34
+ def test_empty_sql_dump
35
+ filename_ = ::File.expand_path('../tmp/tmp.sql', ::File.dirname(__FILE__))
36
+ ::FileUtils.rm_f(filename_)
37
+ ::FileUtils.mkdir_p(::File.dirname(filename_))
38
+ ::ActiveRecord::Tasks::DatabaseTasks.create(TestTasks.new_database_config.merge('schema_search_path' => 'public,postgis'))
39
+ ::ActiveRecord::Tasks::DatabaseTasks.structure_dump(TestTasks.new_database_config, filename_)
40
+ sql_ = ::File.read(filename_)
41
+ assert(sql_ !~ /CREATE/)
42
+ end
43
+
44
+ def test_basic_geography_sql_dump
45
+ filename_ = ::File.expand_path('../tmp/tmp.sql', ::File.dirname(__FILE__))
46
+ ::FileUtils.rm_f(filename_)
47
+ ::FileUtils.mkdir_p(::File.dirname(filename_))
48
+ ::ActiveRecord::Tasks::DatabaseTasks.create(TestTasks.new_database_config.merge('schema_search_path' => 'public,postgis'))
49
+ ::ActiveRecord::Base.connection.create_table(:spatial_test) do |t_|
50
+ t_.point "latlon", :geographic => true
51
+ end
52
+ ::ActiveRecord::Tasks::DatabaseTasks.structure_dump(TestTasks.new_database_config, filename_)
53
+ data_ = ::File.read(filename_)
54
+ assert(data_.index('latlon geography(Point,4326)'))
55
+ end
56
+
57
+ def test_empty_schema_dump
58
+ filename_ = ::File.expand_path('../tmp/tmp.rb', ::File.dirname(__FILE__))
59
+ ::FileUtils.rm_f(filename_)
60
+ ::FileUtils.mkdir_p(::File.dirname(filename_))
61
+ ::ActiveRecord::Tasks::DatabaseTasks.create(TestTasks.new_database_config.merge('schema_search_path' => 'public,postgis'))
62
+ require 'active_record/schema_dumper'
63
+ ::File.open(filename_, "w:utf-8") do |file_|
64
+ ::ActiveRecord::SchemaDumper.dump(::ActiveRecord::Base.connection, file_)
65
+ end
66
+ data_ = ::File.read(filename_)
67
+ assert(data_.index('ActiveRecord::Schema'))
68
+ end
69
+
70
+ def test_basic_geometry_schema_dump
71
+ filename_ = ::File.expand_path('../tmp/tmp.rb', ::File.dirname(__FILE__))
72
+ ::FileUtils.rm_f(filename_)
73
+ ::FileUtils.mkdir_p(::File.dirname(filename_))
74
+ ::ActiveRecord::Tasks::DatabaseTasks.create(TestTasks.new_database_config.merge('schema_search_path' => 'public,postgis'))
75
+ conn_ = ::ActiveRecord::Base.connection
76
+ conn_.create_table(:spatial_test) do |t_|
77
+ t_.geometry 'object1'
78
+ t_.spatial "object2", :limit => {:srid=>conn_.default_srid, :type=>"geometry"}
79
+ end
80
+ require 'active_record/schema_dumper'
81
+ ::File.open(filename_, "w:utf-8") do |file_|
82
+ ::ActiveRecord::SchemaDumper.dump(conn_, file_)
83
+ end
84
+ data_ = ::File.read(filename_)
85
+ assert(data_.index("t.spatial \"object1\", limit: {:srid=>#{conn_.default_srid}, :type=>\"geometry\"}"))
86
+ assert(data_.index("t.spatial \"object2\", limit: {:srid=>#{conn_.default_srid}, :type=>\"geometry\"}"))
87
+ end
88
+
89
+ def test_basic_geography_schema_dump
90
+ filename_ = ::File.expand_path('../tmp/tmp.rb', ::File.dirname(__FILE__))
91
+ ::FileUtils.rm_f(filename_)
92
+ ::FileUtils.mkdir_p(::File.dirname(filename_))
93
+ ::ActiveRecord::Tasks::DatabaseTasks.create(TestTasks.new_database_config.merge('schema_search_path' => 'public,postgis'))
94
+ conn_ = ::ActiveRecord::Base.connection
95
+ conn_.create_table(:spatial_test) do |t_|
96
+ t_.point "latlon1", :geographic => true
97
+ t_.spatial "latlon2", :limit => {:srid=>4326, :type=>"point", :geographic=>true}
98
+ end
99
+ require 'active_record/schema_dumper'
100
+ ::File.open(filename_, "w:utf-8") do |file_|
101
+ ::ActiveRecord::SchemaDumper.dump(conn_, file_)
102
+ end
103
+ data_ = ::File.read(filename_)
104
+ assert(data_.index('t.spatial "latlon1", limit: {:srid=>4326, :type=>"point", :geographic=>true}'))
105
+ assert(data_.index('t.spatial "latlon2", limit: {:srid=>4326, :type=>"point", :geographic=>true}'))
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ar-postgis
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Azuma, Tee Parham
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 4.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 4.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rgeo-ar
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rdoc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: This is an ActiveRecord connection adapter for PostGIS. It is based on
84
+ the stock PostgreSQL adapter, but provides built-in support for the spatial extensions
85
+ provided by PostGIS. It uses the RGeo library to represent spatial data in Ruby.
86
+ email: dazuma@gmail.com, parhameter@gmail.com
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files:
90
+ - Documentation.rdoc
91
+ - History.rdoc
92
+ - README.rdoc
93
+ files:
94
+ - Documentation.rdoc
95
+ - History.rdoc
96
+ - LICENSE.txt
97
+ - README.rdoc
98
+ - lib/active_record/connection_adapters/postgis_adapter.rb
99
+ - lib/active_record/connection_adapters/postgis_adapter/rails4/create_connection.rb
100
+ - lib/active_record/connection_adapters/postgis_adapter/rails4/databases.rake
101
+ - lib/active_record/connection_adapters/postgis_adapter/rails4/main_adapter.rb
102
+ - lib/active_record/connection_adapters/postgis_adapter/rails4/postgis_database_tasks.rb
103
+ - lib/active_record/connection_adapters/postgis_adapter/rails4/spatial_column.rb
104
+ - lib/active_record/connection_adapters/postgis_adapter/rails4/spatial_table_definition.rb
105
+ - lib/active_record/connection_adapters/postgis_adapter/railtie.rb
106
+ - lib/active_record/connection_adapters/postgis_adapter/shared/arel_tosql.rb
107
+ - lib/active_record/connection_adapters/postgis_adapter/shared/common_adapter_methods.rb
108
+ - lib/active_record/connection_adapters/postgis_adapter/shared/railtie.rb
109
+ - lib/active_record/connection_adapters/postgis_adapter/shared/setup.rb
110
+ - lib/active_record/connection_adapters/postgis_adapter/version.rb
111
+ - lib/activerecord-postgis-adapter.rb
112
+ - test/database.yml
113
+ - test/tc_basic.rb
114
+ - test/tc_ddl.rb
115
+ - test/tc_nested_class.rb
116
+ - test/tc_spatial_queries.rb
117
+ - test/tc_tasks.rb
118
+ homepage: http://github.com/ar-postgis/ar-postgis
119
+ licenses:
120
+ - BSD
121
+ metadata: {}
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 2.0.0
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 2.2.2
139
+ signing_key:
140
+ specification_version: 4
141
+ summary: An ActiveRecord adapter for PostGIS, based on RGeo.
142
+ test_files:
143
+ - test/database.yml
144
+ - test/tc_basic.rb
145
+ - test/tc_ddl.rb
146
+ - test/tc_nested_class.rb
147
+ - test/tc_spatial_queries.rb
148
+ - test/tc_tasks.rb
149
+ has_rdoc: