dm-postgis 1.2.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source :rubyforge
2
2
 
3
3
  gemspec
4
-
data/Gemfile.lock CHANGED
@@ -1,33 +1,55 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dm-postgis (1.2.4)
4
+ dm-postgis (2.0.0)
5
5
  GeoRuby (= 1.3.4)
6
- dm-core (~> 1.1.0)
7
- dm-postgres-adapter (~> 1.1.0)
6
+ dm-core (~> 1.2.0)
7
+ dm-postgres-adapter (~> 1.2.0)
8
8
  rake
9
9
 
10
10
  GEM
11
11
  remote: http://rubygems.org/
12
12
  specs:
13
13
  GeoRuby (1.3.4)
14
- addressable (2.2.6)
15
- data_objects (0.10.6)
14
+ addressable (2.2.8)
15
+ columnize (0.3.6)
16
+ data_objects (0.10.10)
16
17
  addressable (~> 2.1)
17
- dm-core (1.1.0)
18
- addressable (~> 2.2.4)
19
- dm-do-adapter (1.1.0)
20
- data_objects (~> 0.10.2)
21
- dm-core (~> 1.1.0)
22
- dm-postgres-adapter (1.1.0)
23
- dm-do-adapter (~> 1.1.0)
24
- do_postgres (~> 0.10.2)
25
- do_postgres (0.10.6)
26
- data_objects (= 0.10.6)
27
- rake (0.9.2)
18
+ debugger (1.2.1)
19
+ columnize (>= 0.3.1)
20
+ debugger-linecache (~> 1.1.1)
21
+ debugger-ruby_core_source (~> 1.1.4)
22
+ debugger-linecache (1.1.1)
23
+ debugger-ruby_core_source (>= 1.1.1)
24
+ debugger-ruby_core_source (1.1.4)
25
+ diff-lcs (1.1.3)
26
+ dm-core (1.2.0)
27
+ addressable (~> 2.2.6)
28
+ dm-do-adapter (1.2.0)
29
+ data_objects (~> 0.10.6)
30
+ dm-core (~> 1.2.0)
31
+ dm-migrations (1.2.0)
32
+ dm-core (~> 1.2.0)
33
+ dm-postgres-adapter (1.2.0)
34
+ dm-do-adapter (~> 1.2.0)
35
+ do_postgres (~> 0.10.6)
36
+ do_postgres (0.10.10)
37
+ data_objects (= 0.10.10)
38
+ rake (0.9.2.2)
39
+ rspec (2.6.0)
40
+ rspec-core (~> 2.6.0)
41
+ rspec-expectations (~> 2.6.0)
42
+ rspec-mocks (~> 2.6.0)
43
+ rspec-core (2.6.4)
44
+ rspec-expectations (2.6.0)
45
+ diff-lcs (~> 1.1.2)
46
+ rspec-mocks (2.6.0)
28
47
 
29
48
  PLATFORMS
30
49
  ruby
31
50
 
32
51
  DEPENDENCIES
52
+ debugger
53
+ dm-migrations (~> 1.2.0)
33
54
  dm-postgis!
55
+ rspec (~> 2.6.0)
data/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # dm-postgis
2
+
3
+ Very simple type for datamapper allowing storing GeoRuby Geometries types in Postgis. This uses GeoRuby to do all the hard work. here's an example
4
+
5
+ ```ruby
6
+
7
+ class Foo
8
+ include DataMapper::Resource
9
+
10
+ property :id, Serial
11
+ property :name, Integer
12
+ property :geom, PostGISGeometry
13
+ end
14
+
15
+ # create a GeoRuby LineString
16
+ line = GeoRuby::SimpleFeatures::LineString.new(4236)
17
+ #add some points
18
+ [[12.12,13.14], [12.13,14.15], [12.15,16.17]].each{|x,y| line.points << GeoRuby::SimpleFeatures::Point.from_x_y(x,y)}
19
+ # stick it in the db!
20
+ f = Foo.create(:name => "random geometry", :geom => line)
21
+ ```
22
+
23
+
24
+ ## Copyright
25
+
26
+ Copyright (c) 2010 Roman Kamyk jr, 2012 svs. See LICENSE for details.
data/dm-postgis.gemspec CHANGED
@@ -2,45 +2,44 @@
2
2
  # Generated by jeweler
3
3
 
4
4
  Gem::Specification.new do |s|
5
- s.name = %q{dm-postgis}
6
- s.version = "1.2.4"
7
-
5
+ s.name = %q{dm-postgis}
6
+ s.version = "2.0.0"
8
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
- s.authors = ["Roman Kamyk jr"]
10
- s.description = %q{Adds DMGeometry type to DataMapper that uses GeoRuby for (de)serializing Geometry types into Postgis}
11
- s.email = %q{roman.kamyk@gmail.com}
8
+ s.authors = ["Roman Kamyk jr","svs"]
9
+ s.description = %q{Adds DMGeometry type to DataMapper that uses GeoRuby for (de)serializing Geometry types into Postgis.}
10
+ s.email = %q{roman.kamyk@gmail.com svs@svs.io}
12
11
  s.extra_rdoc_files = [
13
12
  "LICENSE",
14
- "README.rdoc"
13
+ "README.md"
15
14
  ]
16
15
  s.files = [
17
16
  ".document",
18
17
  "Gemfile",
19
18
  "Gemfile.lock",
20
19
  "LICENSE",
21
- "README.rdoc",
20
+ "README.md",
22
21
  "Rakefile",
23
22
  "VERSION",
24
23
  "dm-postgis.gemspec",
25
- "lib/dm-postgis-adapter.rb",
26
24
  "lib/dm-postgis.rb",
27
- "lib/postgis_adapter.rb",
28
- "spec/dummy.rb",
29
- "spec/fixtures/geo.rb"
25
+ "lib/dm-postgis/pg_geometry.rb",
26
+ "spec/pg_geometry_spec.rb",
30
27
  ]
31
28
  s.homepage = %q{http://github.com/rkj/dm-postgis}
32
29
  s.require_paths = ["lib"]
33
30
  s.rubygems_version = %q{1.3.7}
34
31
  s.summary = %q{Geometry type for DataMapper}
35
32
  s.test_files = [
36
- "spec/dummy.rb",
37
- "spec/fixtures/geo.rb"
33
+ "spec/pg_geometry_spec.rb",
38
34
  ]
39
35
 
40
- dm_version = "~>1.1.0"
36
+ dm_version = "~>1.2.0"
37
+ s.add_dependency "GeoRuby", "1.3.4"
41
38
  s.add_runtime_dependency "rake"
42
- s.add_runtime_dependency "GeoRuby", "1.3.4"
43
39
  s.add_runtime_dependency "dm-core", dm_version
44
40
  s.add_runtime_dependency "dm-postgres-adapter", dm_version
41
+ s.add_development_dependency "dm-migrations", dm_version
42
+ s.add_development_dependency "rspec", "~>2.6.0"
43
+ s.add_development_dependency "debugger"
45
44
  end
46
45
 
@@ -0,0 +1,29 @@
1
+ require 'dm-core'
2
+ require 'geo_ruby'
3
+ module DataMapper
4
+ class Property
5
+ class PostGISGeometry < Object
6
+ include GeoRuby::SimpleFeatures
7
+
8
+ def primitive?(value)
9
+ value.kind_of? Geometry
10
+ end
11
+
12
+ def dump(value)
13
+ value.nil? ? nil : value.as_hex_ewkb
14
+ end
15
+
16
+ def valid?(value, negated = false)
17
+ super || dump(value).kind_of?(::String)
18
+ end
19
+
20
+ def load(value)
21
+ value.nil? ? nil : Geometry.from_hex_ewkb(value)
22
+ end
23
+
24
+ def typecast_to_primitive(value)
25
+ load(value)
26
+ end
27
+ end # class Text
28
+ end # module Types
29
+ end # module DataMapper
data/lib/dm-postgis.rb CHANGED
@@ -1,30 +1,28 @@
1
- require 'geo_ruby'
2
1
  require 'dm-core'
2
+ require 'dm-migrations'
3
+ require 'dm-postgres-adapter'
3
4
 
4
- module DataMapper
5
- class Property
6
- class DMGeometry < Object
7
- include GeoRuby::SimpleFeatures
8
5
 
9
- def primitive?(value)
10
- value.kind_of? Geometry
11
- end
12
6
 
13
- def dump(value)
14
- value.nil? ? nil : value.as_hex_ewkb
15
- end
7
+ module DataMapper
16
8
 
17
- def valid?(value, negated = false)
18
- super || dump(value).kind_of?(::String)
19
- end
9
+ class Property
10
+ autoload :PostGISGeometry, 'dm-postgis/pg_geometry'
11
+ end
20
12
 
21
- def load(value)
22
- value.nil? ? nil : Geometry.from_hex_ewkb(value)
23
- end
13
+ module PostGIS
14
+ def self.included(base)
15
+ base.extend ClassMethods
16
+ end
24
17
 
25
- def typecast_to_primitive(value)
26
- load(value)
27
- end
28
- end # class Text
29
- end # module Types
30
- end # module DataMapper
18
+ module ClassMethods
19
+ def type_map
20
+ super.merge(
21
+ DataMapper::Property::PostGISGeometry => { :primitive => 'GEOMETRY' }
22
+ ).freeze
23
+ end # type_map
24
+ end # module ClassMethods
25
+ end # class PostGIS
26
+ end # module
27
+
28
+ DataMapper::Adapters::PostgresAdapter.send(:include,DataMapper::PostGIS)
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe "dm-postgis" do
4
+ let(:line) { GeoRuby::SimpleFeatures::LineString.new(4236).tap {|l|
5
+ [[12.12,13.14], [12.13,14.15], [12.15,16.17]].each{|x,y| l.points << GeoRuby::SimpleFeatures::Point.from_x_y(x,y)}
6
+ }
7
+ }
8
+ describe "dump" do
9
+ subject { Foo.properties[:geom].dump(line) }
10
+ it { should == "01020000208C100000030000003D0AD7A3703D284048E17A14AE472A40C3F5285C8F422840CDCCCCCCCC4C2C40CDCCCCCCCC4C2840EC51B81E852B3040" }
11
+ end
12
+ describe "load" do
13
+ subject { Foo.properties[:geom].load("01020000208C100000030000003D0AD7A3703D284048E17A14AE472A40C3F5285C8F422840CDCCCCCCCC4C2C40CDCCCCCCCC4C2840EC51B81E852B3040") }
14
+ it { should == line }
15
+ end
16
+
17
+ end
18
+
metadata CHANGED
@@ -1,140 +1,172 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dm-postgis
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 2
9
- - 4
10
- version: 1.2.4
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Roman Kamyk jr
9
+ - svs
14
10
  autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
-
18
- date: 2011-09-28 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
13
+ date: 2013-09-02 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: GeoRuby
17
+ requirement: !ruby/object:Gem::Requirement
22
18
  none: false
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- hash: 3
27
- segments:
28
- - 0
29
- version: "0"
19
+ requirements:
20
+ - - '='
21
+ - !ruby/object:Gem::Version
22
+ version: 1.3.4
30
23
  type: :runtime
31
- name: rake
32
- version_requirements: *id001
33
24
  prerelease: false
34
- - !ruby/object:Gem::Dependency
35
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
36
26
  none: false
37
- requirements:
38
- - - "="
39
- - !ruby/object:Gem::Version
40
- hash: 19
41
- segments:
42
- - 1
43
- - 3
44
- - 4
27
+ requirements:
28
+ - - '='
29
+ - !ruby/object:Gem::Version
45
30
  version: 1.3.4
31
+ - !ruby/object:Gem::Dependency
32
+ name: rake
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
46
39
  type: :runtime
47
- name: GeoRuby
48
- version_requirements: *id002
49
40
  prerelease: false
50
- - !ruby/object:Gem::Dependency
51
- requirement: &id003 !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
52
42
  none: false
53
- requirements:
54
- - - ~>
55
- - !ruby/object:Gem::Version
56
- hash: 19
57
- segments:
58
- - 1
59
- - 1
60
- - 0
61
- version: 1.1.0
62
- type: :runtime
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
63
48
  name: dm-core
64
- version_requirements: *id003
65
- prerelease: false
66
- - !ruby/object:Gem::Dependency
67
- requirement: &id004 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
68
50
  none: false
69
- requirements:
70
- - - ~>
71
- - !ruby/object:Gem::Version
72
- hash: 19
73
- segments:
74
- - 1
75
- - 1
76
- - 0
77
- version: 1.1.0
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.2.0
78
55
  type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 1.2.0
63
+ - !ruby/object:Gem::Dependency
79
64
  name: dm-postgres-adapter
80
- version_requirements: *id004
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: 1.2.0
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - "~>"
77
+ - !ruby/object:Gem::Version
78
+ version: 1.2.0
79
+ - !ruby/object:Gem::Dependency
80
+ name: dm-migrations
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: 1.2.0
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: 1.2.0
95
+ - !ruby/object:Gem::Dependency
96
+ name: rspec
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 2.6.0
103
+ type: :development
81
104
  prerelease: false
82
- description: Adds DMGeometry type to DataMapper that uses GeoRuby for (de)serializing Geometry types into Postgis
83
- email: roman.kamyk@gmail.com
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 2.6.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: debugger
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ description: Adds DMGeometry type to DataMapper that uses GeoRuby for (de)serializing
128
+ Geometry types into Postgis.
129
+ email: roman.kamyk@gmail.com svs@svs.io
84
130
  executables: []
85
-
86
131
  extensions: []
87
-
88
- extra_rdoc_files:
132
+ extra_rdoc_files:
89
133
  - LICENSE
90
- - README.rdoc
91
- files:
92
- - .document
134
+ - README.md
135
+ files:
136
+ - ".document"
93
137
  - Gemfile
94
138
  - Gemfile.lock
95
139
  - LICENSE
96
- - README.rdoc
140
+ - README.md
97
141
  - Rakefile
98
142
  - VERSION
99
143
  - dm-postgis.gemspec
100
- - lib/dm-postgis-adapter.rb
101
144
  - lib/dm-postgis.rb
102
- - lib/postgis_adapter.rb
103
- - spec/dummy.rb
104
- - spec/fixtures/geo.rb
145
+ - lib/dm-postgis/pg_geometry.rb
146
+ - spec/pg_geometry_spec.rb
105
147
  homepage: http://github.com/rkj/dm-postgis
106
148
  licenses: []
107
-
108
149
  post_install_message:
109
150
  rdoc_options: []
110
-
111
- require_paths:
151
+ require_paths:
112
152
  - lib
113
- required_ruby_version: !ruby/object:Gem::Requirement
153
+ required_ruby_version: !ruby/object:Gem::Requirement
114
154
  none: false
115
- requirements:
155
+ requirements:
116
156
  - - ">="
117
- - !ruby/object:Gem::Version
118
- hash: 3
119
- segments:
120
- - 0
121
- version: "0"
122
- required_rubygems_version: !ruby/object:Gem::Requirement
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
160
  none: false
124
- requirements:
161
+ requirements:
125
162
  - - ">="
126
- - !ruby/object:Gem::Version
127
- hash: 3
128
- segments:
129
- - 0
130
- version: "0"
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
131
165
  requirements: []
132
-
133
166
  rubyforge_project:
134
- rubygems_version: 1.8.10
167
+ rubygems_version: 1.8.25
135
168
  signing_key:
136
169
  specification_version: 3
137
170
  summary: Geometry type for DataMapper
138
- test_files:
139
- - spec/dummy.rb
140
- - spec/fixtures/geo.rb
171
+ test_files:
172
+ - spec/pg_geometry_spec.rb
data/README.rdoc DELETED
@@ -1,7 +0,0 @@
1
- = dm-postgis
2
-
3
- Very simple type for datamapper allowing storing Geometry types in Postgis.
4
-
5
- == Copyright
6
-
7
- Copyright (c) 2010 Roman Kamyk jr. See LICENSE for details.
@@ -1,9 +0,0 @@
1
- require 'postgis_adapter'
2
- require 'dm-postgres-adapter'
3
- module DataMapper
4
- module Adapters
5
- class PostgisAdapter < PostgresAdapter
6
- include DataMapper::Migrations::PostgisAdapter
7
- end
8
- end
9
- end
@@ -1,28 +0,0 @@
1
- require 'do_postgres'
2
-
3
- module DataObjects
4
- module Postgis
5
- include Postgres
6
- end
7
- end
8
-
9
- require 'dm-migrations/adapters/dm-postgres-adapter'
10
- module DataMapper
11
- module Migrations
12
- module PostgisAdapter
13
- include DataMapper::Migrations::PostgresAdapter
14
- def self.included(base)
15
- base.extend DataObjectsAdapter::ClassMethods
16
- base.extend ClassMethods
17
- end
18
-
19
- module ClassMethods
20
- def type_map
21
- @type_map ||= super.merge(
22
- DataMapper::Property::DMGeometry => { :primitive => 'GEOMETRY' }
23
- ).freeze
24
- end # type_map
25
- end # module ClassMethods
26
- end # class PostgresAdapter
27
- end # module Migration
28
- end # module
data/spec/dummy.rb DELETED
@@ -1,30 +0,0 @@
1
- require 'dm-core/spec/setup'
2
- require 'dm-core/spec/lib/adapter_helpers'
3
- require 'dm-migrations'
4
-
5
- ENV['ADAPTER']='postgres'
6
- DataMapper::Spec.setup
7
-
8
- describe "dm-postgis" do
9
- it "should load" do
10
- require 'dm-postgis'
11
- end
12
-
13
- describe "should allow DMGeometry property" do
14
- require 'dm-postgis'
15
- require 'fixtures/geo'
16
- it 'should work for empty values' do
17
- TestTable.new.should_not be_nil
18
- end
19
-
20
- it 'should work for positions' do
21
- g = GeoRuby::SimpleFeatures::Point.from_x_y(1, 2)
22
- t = TestTable.new(:position => g)
23
- t.save.should be(true)
24
- t.reload
25
- t.position.x.should == 1
26
- t.position.y.should == 2
27
- end
28
- end
29
- end
30
-
data/spec/fixtures/geo.rb DELETED
@@ -1,7 +0,0 @@
1
- class TestTable
2
- include ::DataMapper::Resource
3
- property :id, Serial
4
- property :position, DMGeometry, :required => false
5
- end
6
- DataMapper.auto_migrate!
7
-