dm-postgis 1.2.4 → 2.0.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.
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
-