nofxx-postgis_adapter 0.1.7 → 0.1.8
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/README.rdoc +20 -9
- data/lib/postgis_adapter.rb +1 -1
- data/lib/postgis_functions/class.rb +7 -1
- data/lib/postgis_functions/common.rb +71 -16
- data/lib/postgis_functions/linestring.rb +4 -4
- data/lib/postgis_functions/point.rb +4 -17
- data/lib/postgis_functions/polygon.rb +3 -3
- data/lib/postgis_functions.rb +5 -3
- data/postgis_adapter.gemspec +2 -2
- data/spec/postgis_functions/linestring_spec.rb +2 -2
- data/spec/postgis_functions/point_spec.rb +21 -7
- data/spec/postgis_functions/polygon_spec.rb +1 -1
- data/spec/spec.opts +2 -2
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
= PostgisAdapter
|
3
2
|
|
4
3
|
A plugin for ActiveRecord which manages the PostGIS geometric columns
|
5
4
|
in a transparent way (that is like the other base data type columns).
|
@@ -16,18 +15,21 @@ Postgis Manual - http://postgis.refractions.net/documentation/manual-svn
|
|
16
15
|
|
17
16
|
If you are using Spatial Adapter, *remove it first*.
|
18
17
|
|
18
|
+
|
19
19
|
==== Dependencies
|
20
20
|
|
21
21
|
- georuby
|
22
22
|
- postgres 8.3+
|
23
23
|
- postgis 1.3+
|
24
24
|
|
25
|
+
|
25
26
|
==== As gem:
|
26
27
|
|
27
28
|
sudo gem sources --add http://gems.github.com
|
28
29
|
sudo gem install nofxx-postgis_adapter
|
29
30
|
|
30
31
|
config.gem "nofxx-postgis_adapter", :lib => "postgis_adapter", :source => "http://gems.github.com"
|
32
|
+
|
31
33
|
|
32
34
|
==== As plugin:
|
33
35
|
|
@@ -36,7 +38,6 @@ If you are using Spatial Adapter, *remove it first*.
|
|
36
38
|
|
37
39
|
=== How to Use
|
38
40
|
|
39
|
-
|
40
41
|
Geometric columns in your ActiveRecord models now appear just like
|
41
42
|
any other column of other basic data types. They can also be dumped
|
42
43
|
in ruby schema mode and loaded in migrations the same way as columns
|
@@ -90,6 +91,7 @@ Here are this fork additions. To use it:
|
|
90
91
|
@street.crosses?(@park)
|
91
92
|
|
92
93
|
@area.contains?(@place)
|
94
|
+
|
93
95
|
|
94
96
|
Polygons:
|
95
97
|
|
@@ -101,6 +103,7 @@ Polygons:
|
|
101
103
|
|
102
104
|
@park.overlaps?(@other_park)
|
103
105
|
=> false
|
106
|
+
|
104
107
|
|
105
108
|
Line Strings:
|
106
109
|
|
@@ -164,6 +167,7 @@ Or use a (almost) postgis like notation:
|
|
164
167
|
@area.bbox "@", @park
|
165
168
|
|
166
169
|
|
170
|
+
|
167
171
|
=== Warning
|
168
172
|
|
169
173
|
*To be fixed:*
|
@@ -173,6 +177,7 @@ implement a multi geom.
|
|
173
177
|
|
174
178
|
http://nofxx.lighthouseapp.com/projects/20712/tickets/3-multiple-geoms-in-model
|
175
179
|
|
180
|
+
|
176
181
|
=== Wiki
|
177
182
|
|
178
183
|
Check out the wiki pages (http://github.com/nofxx/postgis_adapter/wikis).
|
@@ -206,8 +211,8 @@ In PostGIS, since you can only use operations with geometries with the same SRID
|
|
206
211
|
Park.find_by_geom([[3,5.6],[19.98,5.9],123])
|
207
212
|
|
208
213
|
|
209
|
-
== Database Tools
|
210
214
|
|
215
|
+
== Database Tools
|
211
216
|
|
212
217
|
=== Migrations
|
213
218
|
|
@@ -244,7 +249,6 @@ the geometric column is a point:
|
|
244
249
|
|
245
250
|
== Geometric data types
|
246
251
|
|
247
|
-
|
248
252
|
Ruby geometric datatypes are currently made available only through
|
249
253
|
the GeoRuby library (http://georuby.rubyforge.org): This is where the
|
250
254
|
*Point.from_x_y* in the example above comes from. It is a goal
|
@@ -252,6 +256,12 @@ of a future release of the Spatial Adapter to support additional
|
|
252
256
|
geometric datatype libraries, such as Ruby/GEOS, as long as they
|
253
257
|
can support reading and writing of EWKB.
|
254
258
|
|
259
|
+
== Annotate
|
260
|
+
|
261
|
+
If you are using annotate_models, check out this fork which adds geometrical annotations for PostgisAdapter and SpatialAdapter:
|
262
|
+
|
263
|
+
http://github.com/nofxx/annotate_models
|
264
|
+
|
255
265
|
|
256
266
|
=== Warning
|
257
267
|
|
@@ -277,22 +287,23 @@ something like this :
|
|
277
287
|
|
278
288
|
== License
|
279
289
|
|
280
|
-
|
281
290
|
Spatial Adapter for Rails is released under the MIT license.
|
282
|
-
|
291
|
+
Postgis Adapter is released under the MIT license.
|
283
292
|
|
284
293
|
|
285
294
|
== Support
|
286
295
|
|
287
|
-
|
288
296
|
Tested using rails 2.2.2 / postgresql 8.3.5 / postgis 1.3.3 / linux / osx
|
289
297
|
|
290
298
|
Any questions, enhancement proposals, bug notifications or corrections:
|
291
299
|
|
292
|
-
|
300
|
+
|
301
|
+
=== PostgisAdapter
|
293
302
|
|
294
303
|
Project Tracker http://nofxx.lighthouseapp.com/projects/20712-postgis_adapter
|
295
304
|
|
305
|
+
|
296
306
|
=== SpatialAdapter
|
297
307
|
|
308
|
+
|
298
309
|
guilhem.vellut+georuby@gmail.com.
|
data/lib/postgis_adapter.rb
CHANGED
@@ -10,6 +10,9 @@ module PostgisFunctions
|
|
10
10
|
#
|
11
11
|
module ClassMethods
|
12
12
|
|
13
|
+
#
|
14
|
+
# Returns the closest record
|
15
|
+
#
|
13
16
|
def closest_to(p, srid=4326)
|
14
17
|
find(:first, :order => "ST_Distance(geom, GeomFromText('POINT(#{p.x} #{p.y})', #{srid}))" )
|
15
18
|
end
|
@@ -18,7 +21,10 @@ module PostgisFunctions
|
|
18
21
|
find(:all, :order => "ST_Distance(geom, GeomFromText('POINT(#{p.x} #{p.y})', #{srid}))" )
|
19
22
|
end
|
20
23
|
|
21
|
-
|
24
|
+
#
|
25
|
+
#
|
26
|
+
#
|
27
|
+
def by_length sort='asc'
|
22
28
|
find(:all, :order => "ST_length(geom) #{sort}" )
|
23
29
|
end
|
24
30
|
|
@@ -98,7 +98,7 @@ module PostgisFunctions
|
|
98
98
|
# Returns Float ST_Distance(geometry g1, geometry g2);
|
99
99
|
#
|
100
100
|
def distance_to(other)
|
101
|
-
postgis_calculate(:distance, [self, other])
|
101
|
+
postgis_calculate(:distance, [self, other]).to_f
|
102
102
|
end
|
103
103
|
|
104
104
|
#
|
@@ -124,6 +124,19 @@ module PostgisFunctions
|
|
124
124
|
postgis_calculate(:within, [self, other])
|
125
125
|
end
|
126
126
|
|
127
|
+
#
|
128
|
+
# True if the geometries are within the specified distance of one another.
|
129
|
+
# The distance is specified in units defined by the spatial reference system
|
130
|
+
# of the geometries. For this function to make sense, the source geometries
|
131
|
+
# must both be of the same coorindate projection, having the same SRID.
|
132
|
+
#
|
133
|
+
# Returns boolean ST_DWithin(geometry g1, geometry g2, double precision distance);
|
134
|
+
#
|
135
|
+
def d_within?(other, margin=0.1)
|
136
|
+
postgis_calculate(:dwithin, [self, other], margin)
|
137
|
+
end
|
138
|
+
alias_method "in_bounds?", "d_within?"
|
139
|
+
|
127
140
|
#
|
128
141
|
# True if geometry B is completely inside geometry A.
|
129
142
|
#
|
@@ -217,7 +230,12 @@ module PostgisFunctions
|
|
217
230
|
def simplify(tolerance=0.1)
|
218
231
|
postgis_calculate(:simplify, self, tolerance)
|
219
232
|
end
|
220
|
-
|
233
|
+
|
234
|
+
|
235
|
+
def simplify!(tolerance=0.1)
|
236
|
+
#FIXME: not good..
|
237
|
+
self.geom = simplify
|
238
|
+
end
|
221
239
|
|
222
240
|
#
|
223
241
|
# Returns a "simplified" version of the given geometry using the Douglas-Peuker
|
@@ -364,20 +382,57 @@ module PostgisFunctions
|
|
364
382
|
postgis_calculate(:polygonize, self)
|
365
383
|
end
|
366
384
|
|
367
|
-
#
|
368
|
-
#
|
369
|
-
#
|
370
|
-
#
|
371
|
-
#
|
385
|
+
#
|
386
|
+
# Returns true if this Geometry is spatially related to anotherGeometry,
|
387
|
+
# by testing for intersections between the Interior, Boundary and Exterior
|
388
|
+
# of the two geometries as specified by the values in the
|
389
|
+
# intersectionPatternMatrix. If no intersectionPatternMatrix is passed in,
|
390
|
+
# then returns the maximum intersectionPatternMatrix that relates the 2 geometries.
|
391
|
+
#
|
392
|
+
#
|
393
|
+
# Version 1: Takes geomA, geomB, intersectionMatrix and Returns 1 (TRUE) if
|
394
|
+
# this Geometry is spatially related to anotherGeometry, by testing for
|
395
|
+
# intersections between the Interior, Boundary and Exterior of the two
|
396
|
+
# geometries as specified by the values in the intersectionPatternMatrix.
|
397
|
+
#
|
398
|
+
# This is especially useful for testing compound checks of intersection,
|
399
|
+
# crosses, etc in one step.
|
400
|
+
#
|
401
|
+
# Do not call with a GeometryCollection as an argument
|
402
|
+
#
|
403
|
+
# This is the "allowable" version that returns a boolean, not an integer.
|
404
|
+
# This is defined in OGC spec.
|
405
|
+
# This DOES NOT automagically include an index call. The reason for that
|
406
|
+
# is some relationships are anti e.g. Disjoint. If you are using a relationship
|
407
|
+
# pattern that requires intersection, then include the && index call.
|
408
|
+
#
|
409
|
+
# Version 2: Takes geomA and geomB and returns the DE-9IM
|
410
|
+
# (dimensionally extended nine-intersection matrix)
|
411
|
+
#
|
412
|
+
# Do not call with a GeometryCollection as an argument
|
413
|
+
# Not in OGC spec, but implied. see s2.1.13.2
|
414
|
+
#
|
415
|
+
# Both Performed by the GEOS module
|
416
|
+
#
|
417
|
+
# Returns:
|
418
|
+
#
|
419
|
+
# text ST_Relate(geometry geomA, geometry geomB);
|
420
|
+
# boolean ST_Relate(geometry geomA, geometry geomB, text intersectionPatternMatrix);
|
421
|
+
#
|
422
|
+
def relate?(other, m = nil)
|
423
|
+
# Relate is case sentitive.......
|
424
|
+
m = "'#{m}'" if m
|
425
|
+
postgis_calculate("Relate", [self, other], m)
|
426
|
+
end
|
427
|
+
|
428
|
+
end
|
372
429
|
|
430
|
+
# NEW
|
431
|
+
#ST_OrderingEquals — Returns true if the given geometries represent the same geometry and points are in the same directional order.
|
432
|
+
#boolean ST_OrderingEquals(g
|
433
|
+
# ST_PointOnSurface — Returns a POINT guaranteed to lie on the surface.
|
434
|
+
#geometry ST_PointOnSurface(geometry g1);eometry A, geometry B);
|
373
435
|
|
374
|
-
#x ST_SnapToGrid(geometry, geometry, sizeX, sizeY, sizeZ, sizeM)
|
375
|
-
# ST_X , ST_Y, SE_M, SE_Z, SE_IsMeasured has_m?
|
376
436
|
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
end
|
437
|
+
#x ST_SnapToGrid(geometry, geometry, sizeX, sizeY, sizeZ, sizeM)
|
438
|
+
# ST_X , ST_Y, SE_M, SE_Z, SE_IsMeasured has_m?
|
@@ -17,7 +17,7 @@ module PostgisFunctions
|
|
17
17
|
# Returns Float
|
18
18
|
#
|
19
19
|
def length
|
20
|
-
dis = postgis_calculate(:length, self)
|
20
|
+
dis = postgis_calculate(:length, self).to_f
|
21
21
|
end
|
22
22
|
|
23
23
|
#
|
@@ -28,7 +28,7 @@ module PostgisFunctions
|
|
28
28
|
# Returns Float
|
29
29
|
#
|
30
30
|
def length_3d
|
31
|
-
dis = postgis_calculate(:length3d, self)
|
31
|
+
dis = postgis_calculate(:length3d, self).to_f
|
32
32
|
end
|
33
33
|
|
34
34
|
#
|
@@ -49,7 +49,7 @@ module PostgisFunctions
|
|
49
49
|
# Returns Float length_spheroid(geometry linestring, spheroid);
|
50
50
|
#
|
51
51
|
def length_spheroid(spheroid = EARTH_SPHEROID)
|
52
|
-
dis = postgis_calculate(:length_spheroid, self, spheroid)
|
52
|
+
dis = postgis_calculate(:length_spheroid, self, spheroid).to_f
|
53
53
|
end
|
54
54
|
|
55
55
|
#
|
@@ -104,7 +104,7 @@ module PostgisFunctions
|
|
104
104
|
# Returns float (0 to 1) ST_Line_Locate_Point(geometry a_linestring, geometry a_point);
|
105
105
|
#
|
106
106
|
def locate_point point
|
107
|
-
postgis_calculate(:line_locate_point, [self, point])
|
107
|
+
postgis_calculate(:line_locate_point, [self, point]).to_f
|
108
108
|
end
|
109
109
|
|
110
110
|
#
|
@@ -8,19 +8,6 @@ module PostgisFunctions
|
|
8
8
|
#
|
9
9
|
module PointFunctions
|
10
10
|
|
11
|
-
#
|
12
|
-
# True if the geometries are within the specified distance of one another.
|
13
|
-
# The distance is specified in units defined by the spatial reference system
|
14
|
-
# of the geometries. For this function to make sense, the source geometries
|
15
|
-
# must both be of the same coorindate projection, having the same SRID.
|
16
|
-
#
|
17
|
-
# Returns boolean ST_DWithin(geometry g1, geometry g2, double precision distance);
|
18
|
-
#
|
19
|
-
def d_within?(other, margin=0.1)
|
20
|
-
postgis_calculate(:dwithin, [self, other], margin)
|
21
|
-
end
|
22
|
-
alias_method "in_bounds?", "d_within?"
|
23
|
-
|
24
11
|
#
|
25
12
|
# Returns a float between 0 and 1 representing the location of the closest point
|
26
13
|
# on LineString to the given Point, as a fraction of total 2d line length.
|
@@ -33,7 +20,7 @@ module PostgisFunctions
|
|
33
20
|
# Returns float (0 to 1) ST_Line_Locate_Point(geometry a_linestring, geometry a_point);
|
34
21
|
#
|
35
22
|
def where_on_line line
|
36
|
-
postgis_calculate(:line_locate_point, [line, self])
|
23
|
+
postgis_calculate(:line_locate_point, [line, self]).to_f
|
37
24
|
end
|
38
25
|
|
39
26
|
#
|
@@ -46,7 +33,7 @@ module PostgisFunctions
|
|
46
33
|
# Returns Float ST_Distance_Sphere(geometry pointlonlatA, geometry pointlonlatB);
|
47
34
|
#
|
48
35
|
def distance_sphere_to(other)
|
49
|
-
dis = postgis_calculate(:distance_sphere, [self, other])
|
36
|
+
dis = postgis_calculate(:distance_sphere, [self, other]).to_f
|
50
37
|
end
|
51
38
|
|
52
39
|
#
|
@@ -69,7 +56,7 @@ module PostgisFunctions
|
|
69
56
|
# Returns ST_Distance_Spheroid(geometry geomA, geometry geomB, spheroid);
|
70
57
|
#
|
71
58
|
def distance_spheroid_to(other, spheroid = EARTH_SPHEROID)
|
72
|
-
postgis_calculate(:distance_spheroid, [self, other], spheroid)
|
59
|
+
postgis_calculate(:distance_spheroid, [self, other], spheroid).to_f
|
73
60
|
end
|
74
61
|
|
75
62
|
#
|
@@ -83,7 +70,7 @@ module PostgisFunctions
|
|
83
70
|
#
|
84
71
|
def azimuth other
|
85
72
|
#TODO: return if not point/point
|
86
|
-
postgis_calculate(:azimuth, [self, other])
|
73
|
+
postgis_calculate(:azimuth, [self, other]).to_f
|
87
74
|
rescue
|
88
75
|
ActiveRecord::StatementInvalid
|
89
76
|
end
|
@@ -15,7 +15,7 @@ module PostgisFunctions
|
|
15
15
|
# Returns Float ST_Area(geometry g1);
|
16
16
|
#
|
17
17
|
def area
|
18
|
-
postgis_calculate(:area, self)
|
18
|
+
postgis_calculate(:area, self).to_f
|
19
19
|
end
|
20
20
|
|
21
21
|
#
|
@@ -27,7 +27,7 @@ module PostgisFunctions
|
|
27
27
|
# Returns Float ST_Perimeter(geometry g1);
|
28
28
|
#
|
29
29
|
def perimeter
|
30
|
-
postgis_calculate(:perimeter, self)
|
30
|
+
postgis_calculate(:perimeter, self).to_f
|
31
31
|
end
|
32
32
|
|
33
33
|
#
|
@@ -37,7 +37,7 @@ module PostgisFunctions
|
|
37
37
|
# Returns Float ST_Perimeter3D(geometry geomA);
|
38
38
|
#
|
39
39
|
def perimeter3d
|
40
|
-
postgis_calculate(:perimeter3d, self)
|
40
|
+
postgis_calculate(:perimeter3d, self).to_f
|
41
41
|
end
|
42
42
|
|
43
43
|
#
|
data/lib/postgis_functions.rb
CHANGED
@@ -56,7 +56,7 @@ module PostgisFunctions
|
|
56
56
|
#
|
57
57
|
# Data => SELECT Func(A,B)
|
58
58
|
# BBox => SELECT (A <=> B)
|
59
|
-
#
|
59
|
+
#
|
60
60
|
if type == :bbox
|
61
61
|
opcode = nil
|
62
62
|
s_join = " #{options} "
|
@@ -73,20 +73,22 @@ module PostgisFunctions
|
|
73
73
|
#p sql; sql
|
74
74
|
end
|
75
75
|
|
76
|
+
#
|
76
77
|
# Execute the query and parse the return.
|
77
78
|
# We may receive:
|
78
79
|
#
|
79
80
|
# "t" or "f" for boolean queries
|
80
81
|
# BIGHASH for geometries
|
82
|
+
# HASH for ST_Relate
|
81
83
|
# Rescue a float
|
82
84
|
#
|
83
85
|
def execute_geometrical_calculation(operation, subject, options) #:nodoc:
|
84
86
|
value = connection.select_value(construct_geometric_sql(operation, subject, options))
|
85
87
|
return nil unless value
|
86
|
-
if value =~
|
88
|
+
if value =~ /t|f/
|
87
89
|
{"f" => false, "t" => true}[value]
|
88
90
|
else
|
89
|
-
GeoRuby::SimpleFeatures::Geometry.from_hex_ewkb(value) rescue value
|
91
|
+
GeoRuby::SimpleFeatures::Geometry.from_hex_ewkb(value) rescue value
|
90
92
|
end
|
91
93
|
end
|
92
94
|
|
data/postgis_adapter.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "postgis_adapter"
|
3
|
-
s.version = "0.1.
|
3
|
+
s.version = "0.1.8"
|
4
4
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
5
5
|
s.authors = ["Marcos Piccinini"]
|
6
|
-
s.date = "2008-12-
|
6
|
+
s.date = "2008-12-16"
|
7
7
|
s.description = "Postgis Adapter for Activer Record"
|
8
8
|
s.email = ["x@nofxx.com"]
|
9
9
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc"]
|
@@ -16,8 +16,8 @@ describe "LineString" do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should sort by size" do
|
19
|
-
Street.
|
20
|
-
Street.
|
19
|
+
Street.by_length.first.data.should == "Street1"
|
20
|
+
Street.by_length.last.data.should == "Street3"
|
21
21
|
end
|
22
22
|
|
23
23
|
it "largest" do
|
@@ -14,6 +14,7 @@ describe "Point" do
|
|
14
14
|
@p1 ||= Position.create!(:data => "Point1", :geom => Point.from_x_y(1,1,123))
|
15
15
|
@p2 ||= Position.create!(:data => "Point2", :geom => Point.from_x_y(5,5,123))
|
16
16
|
@p3 ||= Position.create!(:data => "Point3", :geom => Point.from_x_y(8,8,123))
|
17
|
+
@p4 ||= Position.create!(:data => "Point5", :geom => Point.from_x_y(18.1,18,123))
|
17
18
|
end
|
18
19
|
|
19
20
|
|
@@ -82,13 +83,6 @@ describe "Point" do
|
|
82
83
|
@p1.should be_outside(@c1)
|
83
84
|
end
|
84
85
|
|
85
|
-
it do
|
86
|
-
@p1.should be_in_bounds(@s1)
|
87
|
-
end
|
88
|
-
|
89
|
-
it "in bounds of a geometry? with option" do
|
90
|
-
@p3.should_not be_in_bounds(@s1, 1)
|
91
|
-
end
|
92
86
|
|
93
87
|
it do
|
94
88
|
@p1.azimuth(@p2).should be_close(0.785398163397448,0.000001)
|
@@ -117,6 +111,26 @@ describe "Point" do
|
|
117
111
|
it do
|
118
112
|
@p3.polygonize.geometries.should be_empty
|
119
113
|
end
|
114
|
+
|
115
|
+
it do
|
116
|
+
@p1.should be_in_bounds(@s1)
|
117
|
+
end
|
120
118
|
|
119
|
+
it "in bounds of a geometry? with option" do
|
120
|
+
@p3.should_not be_in_bounds(@s1, 1)
|
121
|
+
end
|
122
|
+
|
123
|
+
it { @p4.in_bounds?(@s3, 0.01).should be_false }
|
124
|
+
|
125
|
+
it { @p4.where_on_line(@s3).should be_close(0.335, 0.0001) }
|
126
|
+
|
127
|
+
it { @s3.locate_point(@p4).should be_close(0.335, 0.1)}
|
128
|
+
|
129
|
+
it { @s3.interpolate_point(0.335).x.should be_close(18.05, 0.01) }
|
130
|
+
|
131
|
+
it { @p1.relate?(@s3, "T*T***FF*").should be_false }
|
132
|
+
|
133
|
+
it { @p1.relate?(@s3).should eql("FF0FFF102") }
|
134
|
+
|
121
135
|
end
|
122
136
|
|
data/spec/spec.opts
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nofxx-postgis_adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcos Piccinini
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-12-
|
12
|
+
date: 2008-12-16 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|